我有一个由模型核心数据填充的UITable,我不希望用户可以删除表格的第一行,所以我这样做:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
if (indexPath.row != 0) {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
[self saveContext];
}
// Delete the managed object for the given index path
}
}
我使用这个if(indexPath.row!= 0),它是对的吗?我尝试,如果我在编辑模式下推删除不会发生什么......它是对还是有更好的方法?
答案 0 :(得分:1)
此代码可以使用,但我认为这是糟糕的UI设计。我不认为用户会理解他们无法删除第一行。更有可能的是,他们会认为该应用无法进入编辑模式。
接口语法教导用户假设所有行都相同且行为相同。有一个特殊行会强制用户停止并思考他们选择了哪一行,然后才能预测选择编辑会产生什么效果。让用户必须跟踪应用状态,就像糟糕的UI设计一样。
如果您对第一行有一些特殊之处,您可能希望将该数据/函数放在tableview标题而不是行中。