我有一个edit button
,我是通过self.editButtonItem
获得的,我将其设置为self.navigationItem.leftBarButtonItem
,这样当按下时,UITableView
开始编辑它变成"Done" button
。再次按下时,视图停止编辑,按钮返回正常状态。
当按下编辑按钮时,我还希望"add" button
变为"Clear" button
,并将不同的操作链接到该iPhone
。
(就像"Phone" app's favourites tab,
edit action
中的情况一样,只需按下编辑按钮时加号按钮变为清除按钮。)
我真的想以这种方式获取self.editButtonItem
和样式等(edit button
),但我还希望有一个额外的选择器链接到UIBarButtonItem
。
我应该怎么做?我曾尝试为{{1}}创建一个类别,但我真的不知道该怎么办。
感谢。
答案 0 :(得分:1)
要创建标题可以更改的按钮,您可以执行以下操作:
为按钮定义一个ivar:
UIBarButtonItem *_btnAddClear;
在viewDidLoad
:
_btnAddClear = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordered target:self action:@selector(addClearAction:)];
_btnAddClear.possibleTitles = [NSSet setWithObjects:@"Add", @"Clear", nil];
由于您希望在点击编辑/完成按钮时更改此按钮的标题,您可以添加如下代码:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
_btnAddClear.title = editing ? @"Clear" : @"All";
}
最后,按钮处理程序:
- (void)addClearAction:(UIBarButtonItem *)button {
if (self.editing) {
// perform "clear" action
} else {
// perform "add" action
}
}
答案 1 :(得分:0)
提供UIBarButton
的标记,例如 101;
并在BarButton方法中写下
-(void)barButtonMethod
{
UIBarButtonItem * myButton = (UIBarButtonItem *) sender;
if(sender.tag == 101)
{
yourBtn.tag = 102;
// Write Your first action method such like
[self ActionMethod1];
}
else
{
yourBtn.tag = 101;
// Write Your second action method such like
[self ActionMethod2];
}
}
答案 2 :(得分:0)
您不需要为editButtonItem创建新操作。
有一个属性可以跟踪UIViewController是否处于编辑状态。
@property(nonatomic, getter=isEditing) BOOL editing
为了做你想做的事,你可以在你的UITableViewController中实现以下方法:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated]
//Do your thing
}