UINavigationBar - Установить заголовок программно?
У меня есть приложение панели вкладок с различным представлением на каждой вкладке. Каждое представление имеет UINavigationBar с заголовком, установленным в Интерфейсном Разработчике. Я хочу изменить заголовок на основе предложения в методе ViewDidLoad, поэтому, если x {изменить заголовок}.
Я пробовал self.title= @"title"
, но это меняет заголовок самого элемента панели вкладок.
Итак, как это сделать?
Ответы
Ответ 1
Я установил заголовок программно, используя код примерно так:
navBar.topItem.title = @"title";
где navBar объявлен как IBOutlet UINavigationBar, связанный с панелью навигации в построителе интерфейса. Это работало в моем приложении; однако я не использовал панель вкладок.
Если navBar.topItem является элементом панели вкладок, я не вижу способа изменить заголовок, отображаемый на панели навигации, без изменения заголовка элемента панели вкладок, поскольку элемент topItem navBar и элемент панели вкладок тот же объект.
Ответ 2
Использование
self.navigationItem.title = @"the title";
поскольку установка navBar.topItem.title
не будет работать при любых обстоятельствах.
Ответ 3
Используйте это:
CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];
UINavigationItem *navItem = [UINavigationItem alloc];
navItem.title = @"Your Title";
[navBar pushNavigationItem:navItem animated:false];
[self.view addSubView:navBar];
или
self.tableView.tableHeaderView = navBar; etc
Ответ 4
Если класс является типом UIViewController, вы можете установить заголовок как заданный в методе viewDidLoad.
[self setTitle:@"My Title"];
Ответ 5
В ViewDidLoad вашего ViewController.m просто напишите
[email protected]"Hello World";
Вот результат:
![enter image description here]()
Ответ 6
Создать IBOutlet
из UINavigationBar
navigationBar.topItem.title = @"Title";
Надеюсь, что это поможет.
Ответ 7
Я использовал следующее:
self.navigationController.navigationBar.topItem.title = @"Title";
Однако мне также пришлось вызвать его в блоке отправки, так как он не изменит название при вызове в viewDidLoad без него.
Ответ 8
Обратите внимание, что для того, чтобы заголовок отображался во ВСЕ, делегат диспетчера навигации ДОЛЖЕН быть установлен на панель навигации или заголовок НИКОГДА не будет отображаться!
Ответ 9
Вы также можете просто установить заголовок в ViewDidLoad под вашим ViewController или TableViewController, используя
_title = @"Title";
или
self.title = @"Title";
Ответ 10
Попробуйте это,
self.navigationItem.title = @"Your title";
Ответ 11
Я добился этого в Swift 5
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Title"
}