问题
I am trying to create a list of items that can be edited. Something like this:
To that end, I added a NavigationBar to the top of the view, then added 2 Bar Button Items in XCode designer. I set the identifier for the button on the left to Add, for the button on the right to Edit.
When I click the Edit, I want to change the text to Done. I've tried various ways, e.g. btnEdit.Title = "Done"
, but it simply doesn't take.
I've seen several blog posts recommending .SetTitle, but UIButtonBarItem doesn't have that method (at least in MonoTouch).
So, how can I change the title of the Edit button?
回答1:
I resolved it. The key was I was setting the identifier of the Edit button to a system value (e.g. UIBarButtonSystemItemEdit) and you can't change the text of those (makes sense now). I changed the identifier back to Custom and setting .Title worked fine.
回答2:
Why don't you try changing the navigationItem.rightbarButtonItem
property ?
1. Set up two buttons, one for edit and one for done
UIBarButtonItem*editButton=[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)];
UIBarButtonItem*doneButton=[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneAction)];
2. And wherever necessary, in editAction
preferrably change the rightBarButtonItem
like:
self.navigationItem.rightBarButtonItem=doneButton;
And if you need the editButton
back
self.navigationItem.rightBarButtonItem=editButton;
回答3:
if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"Edit"])
{
self.navigationItem.rightBarButtonItem.title= @"Done";
}
hope this helps. happy coding :)
回答4:
Works for me like this as UIBarButtonItem *btnEdit; is class memember in .h;
btnEdit = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(btnEditClicked)];
self.navigationItem.leftBarButtonItem = btnEdit;
//[btnEdit release];
Now selector called would be:
-(void)btnEditClicked
{
if([btnEdit.title isEqualToString:@"Edit"])
{
[btnEdit setTitle:@"Done"];
}
else
{
[btnEdit setTitle:@"Edit"];
}
}
回答5:
Control drag from bar button to file (using assistant editor), create outlet (in this case, its called "barButton". Then, add this:
Swift 3.0:
self.barButton.title = "New title"
回答6:
Re-new the button like below . .
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "title", style: UIBarButtonItemStyle.plain, target: self, action: #selector(actionMethod))
来源:https://stackoverflow.com/questions/12257522/how-to-change-the-text-of-a-barbuttonitem-on-the-navigationbar