iPhone: настройка заголовка панели навигации



Привет всем. Я все еще довольно новичок в разработке iPhone, и у меня возникли проблемы с тем, как изменить название моей навигационной панели. По другому вопросу на этом сайте кто-то рекомендовал использовать :



viewController.title = @"title text";


но это не работает для me...Do мне нужно добавить UINavigationController для этого? Или, может быть, просто выход из моего подкласса UIViewController? Если это поможет, я определил панель навигации В IB, и я пытаюсь установить ее название в моем Для UIViewController подкласса. Это еще одна из тех простых вещей, которые вызывают у меня головную боль. Ставлю себя.title = @ "текст заголовка"; in viewDidLoad и initWithNibName не работает. Кто-нибудь знает, что происходит и как это сделать правильно?



спасибо!

578   14  

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";
}

в моем навигационном приложении я делаю это:

myViewController.navigationItem.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"
  }
}

то, что сработало для меня было self.titleLabel.text = @"New Title";

Comments

    Ничего не найдено.