UINavigationBar - установить название программно? iPhone SDK 4
У меня есть приложение панели вкладок с разным видом на каждой вкладке. Каждое представление имеет UINavigationBar с заголовком, установленным на Interface Builder. Я хочу изменить заголовок на основе предложения в методе ViewDidLoad, поэтому если x { изменить заголовок }.
Я пробовал self.title = @"title"
, который я читал здесь на Stackoverflow-но это меняет название самого элемента панели вкладок.
Итак, как это делается?
10 ответов:
Я установил название программно с помощью кода что-то вроде этого:
navBar.topItem.title = @"title";
где navBar объявляется как IBOutlet UINavigationBar, связанный с навигационной панелью в interface builder. Это работало в моем приложении; однако, я не использовал панель вкладок.
если navBar.topItem-это элемент панели вкладок, я не вижу способа изменить заголовок, который появляется на панели навигации, не изменяя также заголовок на элементе панели вкладок, поскольку topItem и вкладка navBar элемент панели-это тот же объект.
использовать
self.navigationItem.title = @"the title";
в качестве параметра
navBar.topItem.title
не будет работать в любых обстоятельствах.
используйте этот :
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
если класс является типом UIViewController, то вы можете установить заголовок, как указано в методе viewDidLoad.
[self setTitle:@"My Title"];
создать
IBOutlet
ofUINavigationBar
navigationBar.topItem.title = @"Title";
надеюсь, что это помогает.
в ViewDidLoad вашего ViewController.просто писать
self.navigationItem.title=@"Hello World";
вот вывод:
я использовал следующие:
self.navigationController.navigationBar.topItem.title = @"Title";
однако мне также пришлось вызвать его в блоке отправки, поскольку он не изменит заголовок при вызове в viewDidLoad без него.
обратите внимание, что для того, чтобы заголовок отображался вообще, делегат навигационного контроллера должен быть установлен на самой панели навигации, иначе заголовок никогда не будет отображаться!