Как добавить кнопку в правую сторону navigationController после нажатия другого контроллера представления?
Итак, сразу после нажатия контроллера вида на мой tableView,
// Override to support row selection in the table view.
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here --
// for example, create and push another view controller.
AnotherViewController *anotherViewController =
[[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
[self.navigationController pushViewController:anotherViewController animated:YES];
Хорошо, так что еще один слайд слайдов, и вы можете вернуться к предыдущему представлению ( "pop" текущего вида), нажав кнопку, которая автоматически появляется в верхнем левом углу панели навигации.
Хорошо, поэтому SAY Я хочу заполнить ПРАВАЯ СТОРОНА навигационной панели кнопкой DONE, например, в приложении "Заметки", которое поставляется с iPhone. Как мне это сделать?
Я попробовал такой код:
UIBarButtonItem * doneButton =
[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector( doneFunc ) ];
self.navigationController.navigationItem.rightBarButtonItem = doneButton ; // not it..
[doneButton release] ;
doneFunc определен, и все, только кнопка никогда не появляется с правой стороны.
Ответы
Ответ 1
AH. Вы должны сделать:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
AnotherViewController *anotherViewController =
[[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
[self.navigationController pushViewController:anotherViewController animated:YES];
UIBarButtonItem * doneButton =
[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector( doneFunc ) ];
anotherViewController.navigationItem.rightBarButtonItem = doneButton ;
[doneButton release] ;
}
Кто его ткнул.
Ответ 2
Кодекс, который вы опубликовали, должен работать нормально, я думаю. Вопрос в том, где вы выразились? Я бы поместил его в метод -viewDidLoad
контроллера вида, в который вы входите. Если вам нужны разные кнопки в зависимости от содержимого, которое вы показываете, вы можете сделать это в методе -viewWillAppear:
.
Обновление. На самом деле, мне кажется, вам нужно изменить
self.navigationController.navigationItem.rightBarButtonItem = doneButton;
к
self.navigationItem.rightBarButtonItem = doneButton;