こんばんは。東條です。
今日はナビゲーションバーの使い方について学びます。
##1.ストーリーボードでの作成方法
ストーリーボードで作る場合はNavigation Barってやつを配置します。
左右にBar Button Itemってやつを配置することで、いい感じになります。Buttonとかを使う時みたいな感じで設定しちゃってください。
##2.コードでの作成方法
ここからが本題。
ストーリーボードで作ると色々と不便な時があるので、コードで作る方法も調べてみました。
処理内容:
1.コードで最初のビューにナビゲーションバーを作成
2.遷移ボタンを押下したら次の画面に遷移&次の画面にナビゲーションバーを作成
3.戻るボタンを押すことで前の画面に戻る
このコードを試すときには、ストーリーボードでビューコントローラーをもう一つ追加して、追加したビューコントローラーのidentify inspectorのStoryboard IDにnextを設定しておいてください。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//ナビゲーションバーを作る
let navBar = UINavigationBar()
//xとyで位置を、widthとheightで幅と高さを指定する
navBar.frame = CGRect(x: 0, y: 0, width: 375, height: 60)
//ナビゲーションアイテムのタイトルを設定
let navItem : UINavigationItem = UINavigationItem(title: "タイトル")
//ナビゲーションバー右のボタンを設定
navItem.rightBarButtonItem = UIBarButtonItem(title: "遷移", style: UIBarButtonItemStyle.plain, target: self, action:#selector(self.myAction))
//ナビゲーションバーにアイテムを追加
navBar.pushItem(navItem, animated: true)
//Viewにナビゲーションバーを追加
self.view.addSubview(navBar)
}
@objc func myAction(){
let storyboard: UIStoryboard = self.storyboard!
let second = storyboard.instantiateViewController(withIdentifier: "next")
//ナビゲーションバーを作る
let navBar = UINavigationBar()
//xとyで位置を、widthとheightで幅と高さを指定する
navBar.frame = CGRect(x: 0, y: 0, width: 375, height: 60)
//ナビゲーションアイテムのタイトルを設定
let navItem : UINavigationItem = UINavigationItem(title: "タイトル")
//ナビゲーションバー左のボタンを設定
navItem.leftBarButtonItem = UIBarButtonItem(title: "戻る", style: UIBarButtonItemStyle.plain, target: self, action:#selector(self.returnView))
//ナビゲーションバーにアイテムを追加
navBar.pushItem(navItem, animated: true)
//遷移先Viewにナビゲーションバーを追加
second.view.addSubview(navBar)
//画面遷移
self.present(second, animated: true, completion: nil)
}
//遷移先Viewから戻る処理
@objc func returnView(){
self.dismiss(animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
ソースで見ると何となくわかったような気になれますね。
actionの内容を変えれば色々楽しめそうです。
ただUIBarButtonItemのStyleやtargetはどのような意味があってどのようにいじれるのでしょう。。。presentやdismissのanimatedとcompletionも謎です。。。