编辑和删除按钮UITableView

时间:2013-11-22 04:12:19

标签: cocoa-touch uitableview

我可以将UITableView置于编辑模式并显示删除按钮。如何在删除按钮旁边添加蓝色的“编辑”按钮?

就像在ios6中在邮件中向左滑动一样,除了邮件应用程序显示“更多”,我想要一个“编辑”按钮。

1 个答案:

答案 0 :(得分:1)

这不是Apple UITableViewCell标准配置的功能 - 您需要使用自己的滑动识别器创建自己的UITableViewCell子类。

This GitHub project是一个很好的开始 - 使用它,您应该能够使用此代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"Cell";

    SWTableViewCell *cell = (SWTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        NSMutableArray *rightUtilityButtons = [NSMutableArray new];

        [rightUtilityButtons sw_addUtilityButtonWithColor:
                    [UIColor colorWithRed:0.78f green:0.78f blue:0.8f alpha:1.0]
                    title:@"More"];
        [rightUtilityButtons sw_addUtilityButtonWithColor:
                    [UIColor colorWithRed:1.0f green:0.231f blue:0.188 alpha:1.0f] 
                        title:@"Delete"];

        cell = [[SWTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                    reuseIdentifier:cellIdentifier 
                    containingTableView:_tableView // For row height and selection
                    leftUtilityButtons:nil 
                    rightUtilityButtons:rightUtilityButtons];
        cell.delegate = self;
    }
...

return cell;

然后为单元格实现委托方法:

- (void)swippableTableViewCell:(SWTableViewCell *)cell didTriggerRightUtilityButtonWithIndex:(NSInteger)index {
    switch (index) {
        case 0:
            NSLog(@"More button was pressed");
            break;
        case 1:
        {
            // Delete button was pressed
            NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell];

            [_testArray removeObjectAtIndex:cellIndexPath.row];
            [self.tableView deleteRowsAtIndexPaths:@[cellIndexPath] 
                    withRowAnimation:UITableViewRowAnimationAutomatic];
            break;
        }
        default:
            break;
    }
}