[英]How to change UIBarButtonItem's type in UINaviagationBar at runtime?
我正在开发一个iPhone视图,它包含3个元素,UITextView,UIToolBar和UIBarButtonItem。
目标是,我希望UIBarButtonItem将其样式从'edit'(UIBarButtonSystemItemEdit)更改为'Done'(UIBarButtonSystemItemDone)并将新选择器更新为新方法。
首先,我尝试了以下代码,但它不起作用:
你能帮我解决这个问题吗?
有一个带有此行为的内置栏按钮,您可以通过UIViewContoller的editButtonItem
属性获取它。 选中该按钮将更改其进入编辑模式的视图控制器,并将按钮切换为完成按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
如果您已通过IB添加按钮,请确保将标识符设置为自定义。还要在.h中分配一个按钮,并使用适当的IBOutlet和属性合成.m中的按钮
然后在您的代码中执行以下操作:
// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";
// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
要更改按钮,完成按钮使用此按钮
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
要将按钮更改为编辑按钮,请使用此选项
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
我最终做了这样的事情。 不幸的是,直接设置标题不起作用,由于某种原因,它是零并且不允许我将其设置为不同的值。 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.