Как добавить кнопку в правую сторону 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;