我正在使用UIBarButtonItem组成3个元素,UITextView,UIToolBar的iPhone视图。我想让UIBarButtonItem从'edit'(UIBarButtonSystemItemEdit)更改它的样式为'Done'(UIBarButtonSystemItemDone),并将新的选择器更新为新的方法。如何在运行时更改UINaviagationBar中的UIBarButtonItem类型?
首先,我曾尝试下面的代码,但它不工作:
你能帮我这个想法?
我正在使用UIBarButtonItem组成3个元素,UITextView,UIToolBar的iPhone视图。我想让UIBarButtonItem从'edit'(UIBarButtonSystemItemEdit)更改它的样式为'Done'(UIBarButtonSystemItemDone),并将新的选择器更新为新的方法。如何在运行时更改UINaviagationBar中的UIBarButtonItem类型?
首先,我曾尝试下面的代码,但它不工作:
你能帮我这个想法?
没有与此行为的内置栏按钮,您通过UIViewContoller的editButtonItem
财产得到它。选中该按钮将会将其来自的视图控制器更改为编辑模式,并将按钮切换为完成按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
更改按钮完成按钮使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
更改按钮编辑按钮使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
如果您已经通过IB添加的按钮,然后确保将标识符设置为自定义 同时在合适的IBOutlet和属性中分配.h中的按钮 合成.m中的按钮
然后在你的代码执行以下操作:
// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";
// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
最后我做这样的事情。不幸的是,直接设置标题不起作用,由于某种原因,它是零,不会让我把它设置为不同的值。 self.editButton来自一个IBOutlet,其目标和操作均已设置。此代码使用ARC。我希望这可以帮助别人。
NSString *title = app.settings.editing
? NSLocalizedString(@"Done", @"")
: NSLocalizedString(@"Edit", @"");
UIBarButtonItemStyle style = app.settings.editing
? UIBarButtonItemStyleDone
: UIBarButtonItemStyleBordered;
UIBarButtonItem *editButton
= [[UIBarButtonItem alloc] initWithTitle:title
style:style
target:self.editButton.target
action:self.editButton.action];
self.navigationItem.rightBarButtonItem = editButton;
非常感谢你!最好的答案与所有类似问题的真正解决方案! – itinance 2014-04-23 20:10:11