代码之家  ›  专栏  ›  技术社区  ›  Marcel Stör

iPhone,钩子编辑/完成按钮点击表视图

  •  24
  • Marcel Stör  · 技术社区  · 16 年前

    在我的表视图控制器中有

    self.navigationItem.leftBarButtonItem = self.editButtonItem;
    

    它在左上角生成一个常规的编辑/完成按钮。因此,一旦用户单击“编辑”,按钮标题将更改为“完成”,并且可以删除或重新排序表条目。我想在用户点击“完成”后得到通知。有挂钩吗?

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

    4 回复  |  直到 11 年前
        1
  •  43
  •   dustin.b    11 年前

    对于那些仍然对这个问题感兴趣的人(或回答:p)

    UITableView API

    显示有一个 - (void)setEditing:(BOOL)editing animated:(BOOL)animate 方法 每次按下“编辑/完成”按钮时都会调用这些方法。你只需检查 (BOOL)editing 使用参数wich one。最后,您必须从最初的编辑/完成按钮调用正确的方法。

    只需将此方法添加到UITableView类中

    - (void)setEditing:(BOOL)editing animated:(BOOL)animate
    {
        [super setEditing:editing animated:animate];
        if(editing)
        {
            NSLog(@"editMode on");
        }
        else
        {
            NSLog(@"Done leave editmode");
        }
    }
    
        2
  •  3
  •   Dia Kharrat    14 年前

    对于那些不想覆盖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];
    }
    
        3
  •  2
  •   Ramin    16 年前

    这是按下条形图按钮时获得通知的标准方法:

    self.editButtonItem.target = self;
    self.editButtonItem.action = @selector(buttonPushed:);
    
    ...
    
    - (void) buttonPushed:(id)sender
    {
    // do stuff here
    }
    
        4
  •  0
  •   mindus    15 年前

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

    谢谢 提努斯