iPhone: настройка заголовка панели навигации
Привет всем. Я все еще довольно новичок в разработке iPhone, и у меня возникли проблемы с тем, как изменить название моей навигационной панели. По другому вопросу на этом сайте кто-то рекомендовал использовать :
viewController.title = @"title text";
но это не работает для me...Do мне нужно добавить UINavigationController для этого? Или, может быть, просто выход из моего подкласса UIViewController? Если это поможет, я определил панель навигации В IB, и я пытаюсь установить ее название в моем Для UIViewController подкласса. Это еще одна из тех простых вещей, которые вызывают у меня головную боль. Ставлю себя.title = @ "текст заголовка"; in viewDidLoad и initWithNibName не работает. Кто-нибудь знает, что происходит и как это сделать правильно?
спасибо!
14 ответов:
контроллер вида должен быть дочерним элементом некоторого UINavigationController для
.titleсвойство вступит в силу. Если 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 нулевым, и если вы установили пользовательский фон для панели навигации, проверьте, установлен ли заголовок без него.
есть одна проблема с использованием
self.title = @"title";Если вы используете панель навигации вместе с панелью вкладок, приведенная выше строка также изменяет метку для элемента панели вкладок. Чтобы избежать этого, используйте то, что @testing предложил
self.navigationItem.title = @"MyTitle";
Если вы хотите изменить название navbar (не название кнопки navbar back!) этот код будет работать.
self.navigationController.topViewController.title = @"info";
Если вы хотите изменить название навигационной панели внутри контроллера табуляции, сделайте это:
-(void)viewDidAppear:(BOOL)animated { self.navigationController.navigationBar.topItem.title = @"myTitle"; }
У меня были навигационные контроллеры, интегрированные в TabbarController. Это сработало
self.navigationItem.title=@"title";
по умолчанию навигационный контроллер отображает заголовок 'topitem'
Так что в вашем методе viewdidload вашего appdelegate вы можете. Я проверил его и он работает
navController.navigationBar.topItem.title = @"Test";
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"]; ... [bar pushNavigationItem:item animated:YES]; [item release];этот код работал.
Если вы работаете с раскадровками, вы можете нажать на контроллер, перейти на вкладку Свойства и установить текст заголовка там.
Я думаю, вам нужен динамический заголовок, поэтому вы не устанавливаете его в IB.
и я предполагаю, что ваш объект viewController-это тот, который указан в NIB?
возможно, пытаясь установить его в фиктивное значение В IB, а затем отладить методы, чтобы увидеть, какой контроллер имеет фиктивное значение - предполагая, что он появляется как заголовок...
из вашего TableViewController.м :
self.navigationController.навигационная панель.topItem.title = @ "бла-бла какой-то удивительный титул";
для всех ваших Свифт-Эрс там, это работало отлично для меня. Это, в частности, один из более коротких способов выполнить настройку заголовка, а также:
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" } }
Comments