У меня есть навигационный контроллер и в нем контроллере вида:UINavigationBar названия и правая кнопка
-NavigationController1
--MyViewController
А так же у меня есть еще один навигационный контроллер - NavigationController2. Я хочу вызвать MyViewController с другого контроллера представления - ViewController2, который был нажат в NavigationController2. -NavigationController2 --ViewController2
Я делаю это следующим образом:
@implementation ModifyDicVController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationItem.rightBarButtonItem = [ [ [UIBarButtonItem alloc]
initWithBarButtonSystemItem:
UIBarButtonSystemItemAdd target:self
action:@selector(add_clicked)] autorelease];
}
-(void) add_clicked
{
[navigationController pushViewController: addWordsVController animated: YES];
}
@end
А вот метод viewWillAppear из MyViewController (тот, который в настоящее время называется):
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self setTitle: @"My title"];
}
Я добавляю кнопку «done» на панель навигации, когда пользователь начинает редактировать текстовое поле:
- (void) textFieldDidBeginEditing: (UITextField *) textField
{
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
initWithTitle: NSLocalizedString(@"button: done", @"")
style:UIBarButtonItemStyleDone
target:self
action:@selector(doneEditing)]
autorelease];
}
Проблема: если я вызываю MyViewController из ViewController2, который был перенесен в NavigationController2, и после этого я вызываю MyViewController из своего собственного NavigationController1, заголовок навигационной панели и сделанная кнопка не добавляются. Однако вызываются методы viewWillAppear и textFieldDidBeginEditing MyViewController.
В чем проблема и как ее исправить?
Спасибо.
Можете ли вы более подробно описать иерархию навигационных контроллеров? –
Это приложение похоже на адресную книгу. У меня есть панель вкладок, из которой я могу выбрать адресную книгу для редактирования (у меня есть несколько книг), а также я могу выбрать вкладку, откуда я могу добавить новый контакт в активную адресную книгу. Обе вкладки являются навигационными контроллерами. А также можно добавить новый контакт в адресную книгу, перейдя на первую вкладку, выберите конкретную адресную книгу для редактирования и оттуда добавьте новые контакты. –