web-dev-qa-db-ja.com

プログラムによるナビゲーションタイトルの変更

タイトル付きのナビゲーションバーがあります。テキストをダブルクリックして名前を変更すると、実際にはナビゲーション項目であると表示されます。

私は次のようにコードを使ってテキストを変更しようとしています。

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

それは明らかに私のコードではありません、それがどのように機能するかを示すだけです。

そのため、ボタンを押すたびにタイトルを変更する必要があります。

152
Rising

表示されている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"
448
drewag

viewDidLoadで以下を試してください

self.navigationItem.title = "Your Title"
55
Avi

以下のコードはXcode 7で私のために働きます:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}
12
grmonkeybiz

私はこれが機能することがわかりました:

navigationItem.title = "Title"
10
AJ9

あなたが手動で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で設定できるさまざまなプロパティについて説明します。

ただ覚えておいてください:

  1. あなたはボタンの機能を失います(自分で配線しない限り)
  2. 内蔵の「左からドラッグして元に戻す」ジェスチャは無効になります。

UINavigationControllerはあなたの友達です。

4
codeblooded

Swift4 を使っている人への正しい答えは、

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}
3
Kevin Singh

Swift 3

ストーリーボードのナビゲーションバー(オブジェクトブラウザから)に付属するナビゲーションタイトルバー項目のアウトレットを作成しました。それから私は以下の行を訴えた:

navigationBarTitleItem.title = "Hello Bar"
3
nyxee

Navigation Controllerに組み込まれているPage View Controllerの子View Controllerからタイトルを変更したい場合、次のようになります。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}
0
Francojamesfan

NavigationControllerの内側にTabBarControllerが埋め込まれている場合は、以下を参照してください。

super.tabBarController?.title = "foobar"

enter image description here

デバッガスクリプトを使ってこのような問題をデバッグできます。階層上のすべての表示/非表示ビューを印刷するには、 Chiselのpvcコマンドを試してください。

0
rustyMagnet

タブバーもタイトルを変更するために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"
}
0
Mukesh Shakya