UITableViewController NavigationItem проблемы с кнопками

У меня проблемы с настройкой кнопок навигации на моем UITableViewController! этот контроллер находится внутри UINavigationController.

У меня следующий вид контроллера:

@interface SettingsViewController : UITableViewController<UITextFieldDelegate, UINavigationControllerDelegate> {

   }
...........

@end

и в файле реализации:

- (void)viewDidLoad 
     {
          self.navigationItem.rightBarButtonItem = self.editButtonItem;
     }

Я добавляю элементы навигационной кнопки программно.

редактировать:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    [super setEditing:editing animated:animated];
    //[self.navigationItem setHidesBackButton:editing animated:YES];

    if (!editing) 
    {
     self.navigationItem.leftBarButtonItem = nil;
        [self save];
    }
    else 
    {
        UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(Cancel:)];
        self.navigationItem.leftBarButtonItem = cancelButtonItem;
        cancelButtonItem = nil;
    }
}

- выше функция редактирования, кажется, работает нормально с точки зрения настройки кнопок навигации

отменить:

- (IBAction)Cancel:(id)sender {
    //cancel
    self.navigationItem.rightBarButtonItem = self.editButtonItem; --> this is not setting edit button.
    self.navigationItem.leftBarButtonItem = nil;
}

- но нажатие на кнопку отмены не заменяет правую кнопку навигации элемента "Готово" на "Редактировать", хотя я делаю это в методе отмены, как показано выше.

что не так с этим кодом?

когда я отлаживаю, я не вижу следующее в области отладки:

po self.navigationItem

есть идеи почему?

Заранее спасибо,

Рама

1 ответ

Решение

Простой, набор editing в NO:

- (IBAction)Cancel:(id)sender {
    //cancel
    self.editing = NO; //--> This is the trick!!!!!!
    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
    self.navigationItem.leftBarButtonItem = nil;
}
Другие вопросы по тегам