我正在开发一个iPhone的视图,它包含3个元素,UITextView,UIToolBar和UIBarButtonItem。
目标是,我希望UIBarButtonItem将其样式从'edit'(UIBarButtonSystemItemEdit)更改为'Done'(UIBarButtonSystemItemDone)并将新选择器更新为新方法。
首先,我尝试了以下代码,但它不起作用:
你能帮我解决这个问题吗?
答案 0 :(得分:14)
有一个带有此行为的内置栏按钮,您可以通过UIViewContoller的editButtonItem
属性获取它。选中该按钮将更改其进入编辑模式的视图控制器,并将按钮切换为完成按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
答案 1 :(得分:5)
如果您已通过IB添加按钮,请确保将标识符设置为自定义 同时在.h中分配一个带有适当IBOutlet和Property的按钮 合成.m
中的按钮然后在您的代码中执行以下操作:
// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";
// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
答案 2 :(得分:4)
更改按钮“完成”按钮使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
将按钮更改为“编辑”按钮使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
答案 3 :(得分:2)
我最终做了这样的事情。不幸的是,直接设置标题不起作用,由于某种原因,它是零并且不允许我将其设置为不同的值。 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;