UITableView在编辑时不显示左侧多个选择圈

时间:2015-03-26 00:02:21

标签: ios objective-c uitableview

我想在收件箱中按下编辑时,在系统Mail.app和Messages.app中获取UITableView的标准多选行为。我将allowsMultipleSelectionDuringEditing设置为YES,并在按下编辑按钮时调用[self.tableView setEditing:YES animated:YES]。然而,一切都保持不变,开放的圆圈不会像我希望的那样从单元格的左侧出现。我没有在其中任何一个上设置任何UITableViewCells accessoryType或调用setEditing

我有什么遗漏,或者我需要做些什么吗?为了清楚起见,我正在寻找左侧多重选择功能,而不是可能出现在单元格右侧的浮动复选标记。感谢

编辑:我刚才意识到我应该指定我没有在UITableViewController中使用表视图,而是在UIViewController中放置一个。如果不使用UITableViewController,我无法获得此功能吗?

2 个答案:

答案 0 :(得分:1)

解决!

事实证明,我没有为数据源方法canEditRowAtIndexPath正确返回YES。所以看起来多个选择是不同的(右侧复选标记与左侧圆圈选择复选标记),具体取决于表视图是否知道它可以编辑。

答案 1 :(得分:0)

尝试使用此

- (void)viewDidLoad
{ 
self.navigationItem.rightBarButtonItem = self.editButtonItem;

}


- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [tableView setEditing:editing animated:YES];
    if (editing) {
        addButton.enabled = NO;
    } else {
        addButton.enabled = YES;
    }
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
    if (indexPath.row == [controller countOfList]-1) {
        return UITableViewCellEditingStyleInsert;
    } else {
        return UITableViewCellEditingStyleDelete;
    }
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    // If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
        [controller removeObjectFromListAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}