やあみんな。私はまだiPhoneの開発にかなり慣れていないので、ナビゲーションバーのタイトルを変更する方法を見つけるのに少し苦労しています。このサイトの別の質問で誰かが使用することをお勧めします:
viewController.title = @"title text";
しかし、それは私のために働いていません...これを達成するためにUINavigationControllerを追加する必要がありますか?または、UIViewControllerサブクラスの単なるアウトレットですか?役立つ場合は、IBでナビゲーションバーを定義し、UIViewControllerサブクラスでタイトルを設定しようとしています。これは、頭痛の種になる単純なことの1つです。 self.title = @ "title text"; viewDidLoad
およびinitWithNibName
でも機能しませんでした。誰が何が起こっているのか、どのようにそれを正しくさせるのか知っていますか?
ありがとう!
.title
プロパティを有効にするには、View ControllerがUINavigationControllerの子である必要があります。 UINavigationBarが単なるビューの場合、タイトルを含むナビゲーションアイテムをプッシュするか、最後のナビゲーションアイテムを変更する必要があります。
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];
または
bar.topItem.title = @"title text";
viewDidLoad
のUIViewController
メソッドのコードですべてを行う場合は、self.title = @"title text";
のみを追加する必要があります
このようなもの:
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"title";
}
self.navigationItem.title = @"title";
を試すこともできます
また、navigationItemがnullでないかどうか、およびナビゲーションバーにカスタム背景を設定したかどうか、タイトルが設定されていないかどうかを確認します。
self.title = @"title";
の使用には1つの問題があります
ナビゲーションバーとタブバーを一緒に使用している場合、上記の行はタブバー項目のラベルも変更します。これを避けるには、@ testingが提案したものを使用してください
self.navigationItem.title = @"MyTitle";
Navbarのタイトルを変更する場合(navbarの戻るボタンのタイトルではありません!)、このコードは機能します。
self.navigationController.topViewController.title = @"info";
TabBarコントローラー内のnavBarのタイトルを変更する場合は、次を実行します。
-(void)viewDidAppear:(BOOL)animated {
self.navigationController.navigationBar.topItem.title = @"myTitle";
}
私のナビゲーションベースのアプリでこれを行います:
myViewController.navigationItem.title = @"MyTitle";
デフォルトでは、Navigation Controllerは「topitem」のタイトルを表示します
そのため、appdelegateのviewdidloadメソッドで次のことができます。私はそれをテストし、動作します
navController.navigationBar.topItem.title = @"Test";
TabbarControllerにナビゲーションコントローラーを統合しました。これは働いた
self.navigationItem.title=@"title";
ストーリーボードで作業している場合は、コントローラーをクリックし、プロパティタブに切り替えて、そこにタイトルテキストを設定できます。
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];
このコードは機能しました。
動的なタイトルが必要なため、IBに設定しないのはそのためです。
そして、あなたのviewControllerオブジェクトはNIBで指定されているものだと思いますか?
おそらく、IBでダミー値に設定してからメソッドをデバッグして、ダミー値を持つコントローラーを確認してください-タイトルとして表示されると仮定して...
TableViewController.m内から:
self.navigationController.navigationBar.topItem.title = @ "Blah blah Some Amazing title";
あなたのすべてのSwift-ersにとって、これは私にとって完璧に機能しました。特に、タイトルを設定する短い方法の1つです。
override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "presentLineItem" {
print("Setting Title")
var vc = segue.destinationViewController as! LineItemsTableViewController
vc.navigationItem.title = "Line Item"
}
}
私のために働いたのはself.titleLabel.text = @"New Title";
でした