タイトル付きのナビゲーションバーがあります。テキストをダブルクリックして名前を変更すると、実際にはナビゲーション項目であると表示されます。
私は次のようにコードを使ってテキストを変更しようとしています。
declare navigation bar as navagationbar here
button stuff {
navigationbar.text = "title"
}
それは明らかに私のコードではありません、それがどのように機能するかを示すだけです。
そのため、ボタンを押すたびにタイトルを変更する必要があります。
表示されているView Controllerの タイトル を変更してタイトルを変更します。
viewController.title = "some title"
通常これはView Controllerにロードされたビューで行われます。
override func viewDidLoad() {
super.viewDidLoad()
self.title = "some title"
}
ただし、これは、View ControllerがUINavigationControllerに埋め込まれている場合にのみ機能します。 Ihighly自分でナビゲーションバーを作成するのではなくこれを行うことをお勧めします。自分でナビゲーションバーを作成することを主張する場合は、次のようにしてタイトルを変更できます。
navigationBar.topItem.title = "some title"
viewDidLoad
で以下を試してください
self.navigationItem.title = "Your Title"
以下のコードはXcode 7で私のために働きます:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Your Title"
}
私はこれが機能することがわかりました:
navigationItem.title = "Title"
あなたが手動でNavigation Bar
を作成しようとするならば、そしてまた、このコードはあなたを助けるでしょう
func setNavBarToTheView() {
let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
self.view.addSubview(navBar);
let navItem = UINavigationItem(title: "Camera");
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
navItem.leftBarButtonItem = doneItem;
navBar.setItems([navItem], animated: true);
}
通常、ベストプラクティスはUIViewController
にタイトルを設定することです。これにより、UINavigationItem
も設定されます。一般的に、これは、何にもリンクされていないUINavigationBar
をプログラムで割り当てて初期化するよりも優れています。
UINavigationBar
がそのために設計された利点と機能性のいくつかを見逃しています。 これはあなたに役立つかもしれないドキュメントへのリンク です。実際のバーとUINavigationItem
で設定できるさまざまなプロパティについて説明します。
ただ覚えておいてください:
UINavigationController
はあなたの友達です。
Swift4 を使っている人への正しい答えは、
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Your Text"
}
Swift 3
ストーリーボードのナビゲーションバー(オブジェクトブラウザから)に付属するナビゲーションタイトルバー項目のアウトレットを作成しました。それから私は以下の行を訴えた:
navigationBarTitleItem.title = "Hello Bar"
Navigation Controllerに組み込まれているPage View Controllerの子View Controllerからタイトルを変更したい場合、次のようになります。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.parent?.title = "some title"
}
NavigationController
の内側にTabBarController
が埋め込まれている場合は、以下を参照してください。
super.tabBarController?.title = "foobar"
デバッガスクリプトを使ってこのような問題をデバッグできます。階層上のすべての表示/非表示ビューを印刷するには、 Chiselのpvc
コマンドを試してください。
タブバーもタイトルを変更するためにself.navigationItem.title = "Your Title Here"
を使用するので、ナビゲーションバーにタイトルを提供するためにself.title = "Your Title Here"
よりself.title
を使用することを好みます。次のコードを1回試してください。
注:何かをする前に、スーパービューのライフサイクルを呼び出す必要があります。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupNavBar()
}
}
private func setupNavBar() {
self.navigationItem.title = "Your Title Here"
}