【发布时间】:2011-11-12 03:27:30
【问题描述】:
我使用代码将 UINavigationController 的左栏按钮设置为编辑按钮
leftBarButton = self.editButtonItem;
我想针对编辑按钮的单击操作更改其他按钮的一些禁用/启用属性。
我怎样才能知道编辑按钮是否被按下?
【问题讨论】:
标签: iphone uinavigationcontroller uinavigationitem
我使用代码将 UINavigationController 的左栏按钮设置为编辑按钮
leftBarButton = self.editButtonItem;
我想针对编辑按钮的单击操作更改其他按钮的一些禁用/启用属性。
我怎样才能知道编辑按钮是否被按下?
【问题讨论】:
标签: iphone uinavigationcontroller uinavigationitem
编辑按钮的操作向您的视图控制器发送setEditing:animated 消息。在您的子类中覆盖它以在进入或离开编辑模式时执行其他操作。
请务必在最后调用super 实现来管理向编辑视图过渡的其余部分。
【讨论】:
setEditing:animated 方法,动画和红色减号按钮不会出现
[super setEditing:editing animated:animated]。
所以我终于找到了解决方案...
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
if(editing) {
//Do something for edit mode
}
else {
//Do something for non-edit mode
}
}
在不改变self.editButtonItem按钮的原始行为的情况下调用此方法。
【讨论】:
在斯威夫特中:
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
....
self.navigationItem.leftBarButtonItem = self.editButtonItem()
}
override func setEditing(editing: Bool, animated: Bool) {
// Toggles the edit button state
super.setEditing(editing, animated: animated)
// Toggles the actual editing actions appearing on a table view
tableView.setEditing(editing, animated: true)
}
【讨论】:
在 Swift 中,您可以遵循以下方法:
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = editButtonItem()
}
override func setEditing(editing: Bool, animated: Bool){
super.setEditing(editing, animated: animated)
tableView.setEditing(editing, animated: true)
}
【讨论】:
if (editing) 分支,你可以说 tableView.setEditing(editing, animation: animated) 并且它适用于两种情况?
UIBarButtonItem *barBut=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(doSomething)];
self.navigationItem.leftBarButtonItem=barBut;
[barBut release];
.h
-(void)doSomething;
.m
-(void)doSomething{
NSLog(@"dooooooooooooo");
//ur stuff
}
更新:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
将被调用
editButtonItem
Returns a bar button item that toggles its title and associated state between Edit and Done.
- (UIBarButtonItem *)editButtonItem
Discussion
If one of the custom views of the navigationItem property is set to the returned object, the associated navigation bar displays an Edit button if editing is NO and a Done button if editing is YES. The default button action invokes the setEditing:animated: method.
Availability
Available in iOS 2.0 and later.
See Also
@property editing
– setEditing:animated:
Declared In
UIViewController.h
【讨论】: