我正在研究由 3 个元素组成的 iPhone 视图,即 UITextView、UIToolBar 和 UIBarButtonItem。
目标是,我希望 UIBarButtonItem 将其样式从“编辑”(UIBarButtonSystemItemEdit)更改为“完成”(UIBarButtonSystemItemDone)并将新选择器更新为新方法。
首先,我尝试了以下代码,但它不起作用:
你能帮我解决这个想法吗?
我正在研究由 3 个元素组成的 iPhone 视图,即 UITextView、UIToolBar 和 UIBarButtonItem。
目标是,我希望 UIBarButtonItem 将其样式从“编辑”(UIBarButtonSystemItemEdit)更改为“完成”(UIBarButtonSystemItemDone)并将新选择器更新为新方法。
首先,我尝试了以下代码,但它不起作用:
你能帮我解决这个想法吗?
有一个具有此行为的内置栏按钮,您可以通过editButtonItem
UIViewContoller 的属性获得它。选择该按钮会将其来自的视图控制器更改为编辑模式,并将按钮切换为完成按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
如果您已通过 IB 添加了按钮,请确保将标识符设置为 Custom 并在 .h 中分配一个按钮,并使用适当的 IBOutlet 和 Property Synthesize .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];
我最终做了这样的事情。不幸的是,直接设置标题不起作用,由于某种原因它是 nil 并且不允许我将它设置为不同的值。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;