0

我使用默认栏按钮项目editButtonItem这里:editButtonItem不改变编辑/完成标题

@property (nonatomic, assign) BOOL isEditing; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
self.navigationItem.rightBarButtonItem = self.editButtonItem; 
[self setupInterface]; 
} 

- (void)setupInterface { 
    if (self.dataElement) { 
     self.isEditing = NO; 
     self.nameTextField.text = self.dataElement.name;; 
    } else { 
     self.isEditing = YES; 
     self.deleteButton.hidden = YES; 
    } 
    } 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    editing = self.isEditing; 
    [super setEditing:editing animated:YES]; 
    if (editing) { 
    [self saveAction]; 
    [self.navigationController popViewControllerAnimated:YES]; 
    } else { 
    self.isEditing = !self.isEditing; 
    } 
} 

- (void)setIsEditing:(BOOL)isEditing { 
    _isEditing = isEditing; 

    if (isEditing) { 
     self.deleteButton.hidden = NO; 
     self.nameTextField.userInteractionEnabled = YES; 
    } else { 
     self.deleteButton.hidden = YES; 
     self.nameTextField.userInteractionEnabled = NO; 
    } 
} 

然而,它没有一个按钮的标题从编辑改为完成。 我知道,它可以自动更改,并且不想将其指定为: self.editButtonItem.title = @“Done”;

+0

检查下面的链接它可能对你有用http://stackoverflow.com/a/12257625/5184217 –

回答

0

找到了解决方法:我们只使用 - (空)setEditing:(BOOL)编辑动画:(BOOL )动画方法。

这可能对别人有用:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
self.navigationItem.rightBarButtonItem = self.editButtonItem; 
[self setupInterface]; 
} 

- (void)setupInterface { 

    if (self.dataElement) { 
     self.nameTextField.text = self.dataElement.name; 
    } 
} 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:YES]; 

    if (editing) { 
     self.deleteButton.hidden = (self.dataElement == nil); 
     self.addImageButton.hidden = NO; 
     self.nameTextField.userInteractionEnabled = YES; 

    } else { 
     self.deleteButton.hidden = YES; 
     self.addImageButton.hidden = YES; 
     self.nameTextField.userInteractionEnabled = NO; 

     [self saveAction]; 
    } 
} 

现在一切工作的权利。

0

改变navigationItem按钮进入完成按钮使用,

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone]; 

改变navigationItem按钮进入编辑按钮使用,

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered]; 

如果已经添加的按钮通过IB Storyboard,然后确保设置标识符。然后在你的代码添加执行以下操作:

editButton.title = @"Done"; 
//or 
editButton.title = @"Edit"; 
+0

谢谢,但它不是我正在寻找。正如我下面所说的,例如,我不想因为本地化而手动设置标题。 –

0

尝试这个

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
UIBarButtonItem *leftLoginBar=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(myProfileClickOnDashboard)]; 
leftLoginBar.tintColor=White; 
self.tabBarController.navigationItem.leftBarButtonItem = leftLoginBar; 
} 



-(void)myProfileClickOnDashboard 
{ 
UIBarButtonItem *rightLoginBar=[[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(filterClickOnDashboard)]; 
rightLoginBar.tintColor=White; 
self.tabBarController.navigationItem.leftBarButtonItem = rightLoginBar; 

//do ... when your bar button is Edit 

} 
-(void)filterClickOnDashboard 
{ 
UIBarButtonItem *leftLoginBar=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(myProfileClickOnDashboard)]; 
leftLoginBar.tintColor=White; 
self.tabBarController.navigationItem.leftBarButtonItem = leftLoginBar; 

    //do... when bar button is Done. 
}