Я не думаю, что назначаемые вами селекторы могут отправлять два аргумента:
@selector(setEditing:animated:)
Действие кнопки обычно просто отправляет либо без аргументов, либо само в качестве аргумента (обычно (id)sender
). Поэтому то, что вы делаете, вероятно, интерпретируется как отправка NO в качестве второго аргумента (поэтому animated = NO
).
Вы должны добавить новый метод, например, так:
-(void)toggleEditing
{
[self setEditing:!self.isEditing animated:YES];
}
И установите действие на своих кнопках:
@selector(toggleEditing)
EDIT
ОК, вот вам более подробный код.
Для начала, ваш исходный пример кода должен быть в viewDidLoad
, а не viewWillAppear
. Это должно выглядеть примерно так:
- (void)viewDidLoad
{
[super viewDidLoad];
.... code where you set up the table view...
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(toggleEditing)];
self.navigationItem.rightBarButtonItem = addButton;
[addButton release];
}
Ваш setEditing
метод должен выглядеть примерно так:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
if (editing)
{
// We are changing to edit mode
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(toggleEditing)];
self.navigationItem.rightBarButtonItem = doneButton;
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
[doneButton release];
self.navigationItem.title = @"Add to Favourites";
}
else
{
// We are changing out of edit mode
self.navigationItem.title = [selectedCellItem valueForKey:@"name"];
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(toggleEditing)];
self.navigationItem.rightBarButtonItem = addButton;
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStylePlain];
[addButton release];
self.navigationItem.title = [selectedCellItem valueForKey:@"name"];
}
}