Как установить название панели навигации программно?
У меня есть панель навигации в представлении, и я хочу изменить ее название элемента навигации программно.
Как это сделать?
10 ответов:
Swift 3 Версия:
Если вы используете панель навигации без навигационного контроллера, то вы можете попробовать это:
navigationBar.topItem?.title = "Your Title"
надеюсь на помощь.
напишите ниже код в
viewDidLoad
или может быть лучше будет, подinitWithNibName:
self.navigationItem.title = @"title";
спасибо.
наиболее распространенный способ использования панели навигации-это навигация контроллер. Вы также можете использовать панель навигации в качестве отдельного объекта в вашем приложении.
Итак, если у вас есть UINavigationController, все, что вам нужно сделать, чтобы установить заголовок панели навигации (как описано во всех предыдущих ответах)
self.navigationItem.title = @"title";
но если у вас есть автономная панель навигации, которая создается программно в объекте UIViewController вы должны установить начальный внешний вид панели навигации, создав соответствующие объекты UINavigationItem и добавив их в стек объектов панели навигации, т. е.
- создать экземпляр панели навигации (UINavigationBar)
- создайте экземпляр элемента панели навигации (UINavigationItem), который управляет кнопками и представлениями, отображаемыми в объекте UINavigationBar. Обратите внимание, что название в этот шаг.
- (необязательный шаг) добавьте кнопки вправо/влево (экземпляры UIBarButtonItem) в элемент панели навигации.
пример кода Objective-C для указанных шагов:
UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)]; /* Create navigation item object & set the title of navigation bar. */ UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name]; /* Create left button item. */ UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)]; navItem.leftBarButtonItem = cancelBtn; /* Create left button item. */ UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)]; navItem.rightBarButtonItem = doneBtn; /* Assign the navigation item to the navigation bar.*/ [navbar setItems:@[navItem]]; /* add navigation bar to the root view.*/ [self.view addSubview:navbar];
для Swift версии автономной панели навигации, проверьте ответ.
этот код не работает для меня
self.navigationItem.title = @"Title here";
но это сработало.
self.title = "Title Name"
используйте его в методе ViewDidLoad
:
@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.
пример :
self.navigationItem.title = @"Title here";
очень важное примечание: убедитесь, что вы внесли изменения, упомянутые выше в методе viewDidLoad контроллера родительского вида или панели навигации родителей в раскадровке
иногда вы можете получить случай, когда вы обновляете заголовок, и это не вызывает никакого эффекта, это может быть, когда у вас есть пользовательский вид на
topItem
поэтому вы можете обновить его следующим образом:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"