Swift3,Xcode8.3.3でiOSアプリの開発をしています。
UINavigationControllerの使い方を勉強して、以下のように画面遷移を実装しました。
Swift
1... 2//画面遷移する関数 3internal func onTouchUpInside(_ sender: UIButton) { 4 let nextViewController = NextViewController() 5 self.navigationController?.pushViewController(nextViewController, animated: true) 6}
Swift
1//遷移先のUIViewController 2import UIKit 3import ChameleonFramework 4 5class NextViewController: UIViewController { 6 7 @IBOutlet weak var startButton: UIButton! 8 @IBOutlet weak var howToButton: UIButton! 9 10 override func viewDidLoad() { 11 self.navigationItem.title = "NEXT" 12 setUpButtons() 13 super.viewDidLoad() 14 } 15 internal func setUpButtons() { 16 self.startButton?.backgroundColor = HexColor(hexString: "#0B409C") 17 self.startButton?.titleLabel?.textColor = ContrastColorOf(backgroundColor: HexColor(hexString: "#0B409C"), returnFlat: true) 18 self.startButton?.titleLabel?.text = "スタート" 19 self.startButton?.layer.masksToBounds = true 20 self.startButton?.layer.cornerRadius = 20.0 21 self.startButton?.reversesTitleShadowWhenHighlighted = false 22 self.startButton?.addTarget(self, action: #selector(self.onTouchDownStart(_:)), for: .touchDown) 23 self.startButton?.addTarget(self, action: #selector(self.onTouchUpInsideStart(_:)), for: .touchUpInside) 24 self.s = self.startButton?.bounds 25 26 self.howToButton?.backgroundColor = HexColor(hexString: "#0B409C") 27 self.howToButton?.titleLabel?.textColor = ContrastColorOf(backgroundColor: HexColor(hexString: "#0B409C"), returnFlat: true) 28 self.howToButton?.titleLabel?.text = "遊びかた" 29 self.howToButton?.layer.masksToBounds = true 30 self.howToButton?.layer.cornerRadius = 20.0 31 self.howToButton?.reversesTitleShadowWhenHighlighted = false 32 self.howToButton?.addTarget(self, action: #selector(self.onTouchDownHowTo(_:)), for: .touchDown) 33 self.howToButton?.addTarget(self, action: #selector(self.onTouchUpInsideHowTo(_:)), for: .touchUpInside) 34 self.h = self.howToButton?.bounds 35 } 36}
このような感じです。
しかしながら、画面遷移はうまくいくのですがstartButton及びhowToButtonが画面に表示されません(真っ白)。ただし、タイトルのみは「NEXT」と切り替わってくれます。
ボタンはStoryboardで設置していますが、その他のボタンの設定やセグエの設定は行っておらず、このコードで表示できるものと思っていました。よってNext View ControllerをStoryboardの中に独立して置いている感じです。初心者のため何か間違っている点があれば教えて頂きたいです。もしこの内容で判断できかねる場合はお尋ねいただければ他の部分もお見せします。
ChameleonFrameworkに関しては、UIColorの設定を補助するライブラリなので関係かと思われます。
追記:
self.startButton?.layer.cornerRadius = 20.0などとボタンに対してnilガードをしているのは、していなかった場合にnilエラーでアプリが落ちてしまったためです。そしてこのようにnilガードするとボタンが表示されません。なので、startButton == null 及び howToButton == nullとなってしまっているのでしょうか、、
回答2件
あなたの回答
tips
プレビュー