0

我有一个edit button, 我通过它获得self.editButtonItem并将它设置为self.navigationItem.leftBarButtonItem,这样当它被按下时, aUITableView开始编辑并变成"Done" button. 再次按下时,视图停止编辑,按钮返回正常状态。当按下编辑按钮时,我还希望将"add" button一个链接到一个不同的动作。"Clear" button(就像iPhone "Phone" app's favourites tab,当按下编辑按钮时加号按钮变成一个清除按钮一样)。

我真的很想以edit action这种方式()获得 and 样式等self.editButtonItem,但我也希望有一个额外的选择器链接到edit button.

我该怎么做呢?我试图为 创建一个类别UIBarButtonItem,但我真的不知道该怎么做。

谢谢。

4

3 回答 3

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
    }
}
于 2013-02-23T14:58:00.293 回答
0

给101UIBarButton之类的标签;

并在 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]; 
     }
}
于 2013-02-23T14:55:08.517 回答
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
}
于 2013-02-23T14:57:02.347 回答