- Xcode 8.3.3
- Swift 3.1
ある程度Xcode側で用意されてるので、それを利用するだけなので😅
ただし細かい調整したい場合は元クラスを調べる等、調査が必要ですので適宜Jump to definitionしましょう🙆
動作としてExample1のナビの右上NextをタップするとExample2へ遷移。
Example2ではナビの左上BackをタップでExample1へ戻れるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import UIKit class Example1ViewController: UIViewController { override func viewDidLoad() { super .viewDidLoad() self .navigationItem.title = "Example1" self .navigationItem.leftBarButtonItem = nil let btnRight = UIBarButtonItem(title: "Next >" , style: UIBarButtonItemStyle.plain, target: self , action: #selector(Example1ViewController.goNext)) self .navigationItem.rightBarButtonItem = btnRight } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } @objc func goNext() { self .navigationController?.pushViewController(Example2ViewController(), animated: true) } }< / textarea> <textarea class = "code" > import UIKit class Example2ViewController: UIViewController { override func viewDidLoad() { super .viewDidLoad() self .navigationItem.title = "Example2" let btnLeft = UIBarButtonItem(title: "< Back" , style: UIBarButtonItemStyle.plain, target: self , action: #selector(Example2ViewController.goBack)) self .navigationItem.leftBarButtonItem = btnLeft self .navigationItem.rightBarButtonItem = nil } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } @objc func goBack() { self .navigationController?.popViewController(animated: true) } } |
使わないleftBarButtonItemやrightBarButtonItemをnilしなくても設定しなければ何も表示されませんが、今後の事も考えると初期化(あえて非表示してますよアピール)しておきましょう。
また、通常こんなハードコーディングをすることはありません。
例としてあえてnil設定を記述したのは、条件によってnilしたりアイテム設定したりというのが書きやすいようにです😀
abstractみたい(Swiftではprotocol extensionか?)にして他メソッドで設定するのも良いですし🙌
最後にこのViewControllerを呼出しましょう。
1 2 | let example1 = UINavigationController(rootViewController: Example1ViewController()) self .present(example1, animated: true, completion: nil) |
0 件のコメント:
コメントを投稿