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. 
}