IPhone: настройка заголовка панели навигации
Эй, все. Я до сих пор довольно новичок в разработке iPhone, и у меня возникли проблемы с тем, как изменить название моей панели навигации. По другому вопросу на этом сайте кто-то рекомендовал использовать:
viewController.title = @"title text";
но это не работает для меня... Нужно ли добавлять UINavigationController для этого? Или, может быть, просто выход из моего подкласса UIViewController? Если это помогает, я определил навигационную панель в IB, и я пытаюсь установить ее заголовок в моем подклассе UIViewController. Это еще одна из тех простых вещей, которая дает мне головную боль. Поместить self.title= @ "текст заголовка"; в viewDidLoad
и initWithNibName
тоже не работало. Кто-нибудь знает, что происходит и как это происходит правильно?
Спасибо!
Ответы
Ответ 1
Контроллер представления должен быть дочерним элементом некоторого UINavigationController для свойства .title
. Если UINavigationBar - просто представление, вам нужно нажать элемент навигации, содержащий заголовок, или изменить последний элемент навигации:
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];
или
bar.topItem.title = @"title text";
Ответ 2
если вы все это делаете с помощью кода в методе viewDidLoad
UIViewController
, вы должны добавить только self.title = @"title text";
что-то вроде этого:
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"title";
}
вы также можете попробовать self.navigationItem.title = @"title";
также проверьте, не является ли ваш navigationItem непустым, и если вы установили пользовательский фон в панель навигации, проверьте, не указан ли заголовок без него.
Ответ 3
Есть одна проблема с использованием self.title = @"title";
Если вы используете панель навигации вместе с панелью вкладок, указанная выше строка также изменяет метку для элемента панели вкладок. Чтобы этого избежать, используйте предложенный @testing
self.navigationItem.title = @"MyTitle";
Ответ 4
Если вы хотите изменить заголовок навигатора (а не название кнопки на панели навигации!), этот код будет работать.
self.navigationController.topViewController.title = @"info";
Ответ 5
Если вы хотите изменить заголовок navBar внутри контроллера tabBar, сделайте следующее:
-(void)viewDidAppear:(BOOL)animated {
self.navigationController.navigationBar.topItem.title = @"myTitle";
}
Ответ 6
В моем приложении, основанном на навигации, я делаю это:
myViewController.navigationItem.title = @"MyTitle";
Ответ 7
По умолчанию контроллер навигации отображает заголовок "topitem"
поэтому вы можете использовать свой метод viewdidload своего приложения. Я тестировал его, и он работает
navController.navigationBar.topItem.title = @"Test";
Ответ 8
У меня были контроллеры навигации, встроенные в TabbarController. Это сработало
[email protected]"title";
Ответ 9
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];
Этот код работал.
Ответ 10
Если вы работаете со Storiesboards, вы можете щелкнуть по контроллеру, переключиться на вкладку свойств и установить там текст заголовка.
Ответ 11
Я думаю, вам нужен динамический заголовок, поэтому вы не устанавливаете его в IB.
И я предполагаю, что ваш объект viewController указан в NIB?
Возможно, попробуйте установить его в фиктивное значение в IB, а затем отлаживать методы, чтобы увидеть, какой контроллер имеет фиктивное значение - при условии, что он отображается как заголовок...
Ответ 12
Внутри TableViewController.m
self.navigationController.navigationBar.topItem.title= @ "Blah blah Some Amazing title";
Ответ 13
Для всех ваших Swift-щиков, это отлично сработало для меня. Это, в частности, один из более коротких способов выполнить настройку заголовка:
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"
}
}
Ответ 14
Что сработало для меня, было self.titleLabel.text = @"New Title";