2016-10-29 2 views
1

У меня есть проблема, Верхняя кнопка не меняет свое имя, но он работаетКак установить заголовок Edit and Done for Button из UIBarButtonItem?

- (IBAction)switchEdit:(UIBarButtonItem *)sender { 
    sender.possibleTitles = [NSSet setWithObjects:@"Edit", @"Done", nil]; 
    if (sender.style == UIBarButtonSystemItemEdit){ 
     sender.style = UIBarButtonSystemItemDone; 
     [self.navigationItem.rightBarButtonItem setTitle:@"Done"]; 
     self.tableView.editing = NO; 
      }else{ 
     sender.style = UIBarButtonSystemItemEdit; 
     [self.navigationItem.rightBarButtonItem setTitle:@"Edit"]; 
     self.tableView.editing = YES; 
    } 
} 

ответ

1

Рассмотрите возможность использования UIViewController «s editButtonItem свойство, так как кажется, делать автоматически, что вам нужно:

Возвращает bar, который переключает заголовок и связанное с ним состояние между Edit и Done.

Если вы хотите сохранить свой подход, вы можете объявить эти две кнопки, как свойства и установить их в viewDidLoad, например, так:

@interface ViewController() 

@property (nonatomic, strong) UIBarButtonItem *editBarButtonItem; 
@property (nonatomic, strong) UIBarButtonItem *doneBarButtonItem; 

@end 

, а затем

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.editBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editSelectorName)]; 
    self.doneBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneSelectorName)]; 
} 

а затем в вашем коде просто:

self.navigationItem.rightBarButtonItem = self.editBarButtonItem 

или

self.navigationItem.rightBarButtonItem = self.doneBarButtonItem 
Смежные вопросы