iPhone,用于编辑/完成按钮的钩子在表格视图中单击

时间:2009-07-01 19:59:32

标签: iphone uitableview

在我的表视图控制器中有

self.navigationItem.leftBarButtonItem = self.editButtonItem;

在左上角生成常规编辑/完成按钮。因此,一旦用户单击“编辑”,按钮标题将变为“完成”,并且可以删除或重新排序表条目。我想在用户实际点击“完成”后收到通知。是否有钩子?

背景:我想保留条目的顺序,即下次用户提取此视图时,我想以最近最少使用的顺序显示条目。

4 个答案:

答案 0 :(得分:41)

对于仍然在这个问题上有兴趣的人(或答案:P)

UITableView API

显示有一种- (void)setEditing:(BOOL)editing animated:(BOOL)animate方法 每次按下此编辑/完成按钮时都会调用这些方法。你只需要使用(BOOL)editing参数进行检查。最后但并非最不重要的是,您必须从最初的编辑/完成按钮调用正确的方法。

只需将此方法添加到您的uitableview类

即可
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
{
    [super setEditing:editing animated:animate];
    if(editing)
    {
        NSLog(@"editMode on");
    }
    else
    {
        NSLog(@"Done leave editmode");
    }
}

答案 1 :(得分:3)

对于那些不想覆盖UITableView的人(例如,如果你正在使用UITableViewController),这是我使用的一个简单而干净的解决方案。它主要涉及创建自己的编辑按钮项,并使用tableView的editing标志来跟踪编辑与完成。为了锦上添花,当表格为空以添加新项目时,它会显示一个“+”按钮(而不是“编辑”)。

- (void) updateEditButtonVisibility
{
    // tableItems represents the data structure that s
    if ([tableItems count] > 0)
    {
        UIBarButtonSystemItem editButtonType = self.tableView.editing ? UIBarButtonSystemItemDone : UIBarButtonSystemItemEdit;
        UIBarButtonItem *editButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:editButtonType
                                                                                        target:self
                                                                                        action:@selector(editButtonTouched)];

        self.navigationItem.rightBarButtonItem = editButtonItem;
        [editButtonItem release];
    }
    else
    {
        UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                                       target:self
                                                                                       action:@selector(addButtonTouched)];
        self.navigationItem.rightBarButtonItem = addButtonItem;
        [addButtonItem release];
    }
}

- (void) editButtonTouched
{
    // edit/done button has been touched

    [self.tableView setEditing:!self.tableView.editing animated:YES];
    [self updateEditButtonVisibility];
}

- (void) addButtonTouched
{
    // logic to allow user to add new items goes here
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self updateEditButtonVisibility];
}

答案 2 :(得分:2)

这是在按下小节按钮时获得通知的标准方式:

self.editButtonItem.target = self;
self.editButtonItem.action = @selector(buttonPushed:);

...

- (void) buttonPushed:(id)sender
{
// do stuff here
}

答案 3 :(得分:0)

可以更改操作。单击编辑按钮后,它会显示删除按钮,而是可以显示拒绝/验证/修改按钮。并更改相应的操作而不是删除选项

由于 Mindus

相关问题