我想在收件箱中按下编辑时,在系统Mail.app和Messages.app中获取UITableView的标准多选行为。我将allowsMultipleSelectionDuringEditing
设置为YES,并在按下编辑按钮时调用[self.tableView setEditing:YES animated:YES]
。然而,一切都保持不变,开放的圆圈不会像我希望的那样从单元格的左侧出现。我没有在其中任何一个上设置任何UITableViewCells accessoryType
或调用setEditing
。
我有什么遗漏,或者我需要做些什么吗?为了清楚起见,我正在寻找左侧多重选择功能,而不是可能出现在单元格右侧的浮动复选标记。感谢
编辑:我刚才意识到我应该指定我没有在UITableViewController中使用表视图,而是在UIViewController中放置一个。如果不使用UITableViewController,我无法获得此功能吗?
答案 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];
}
}