ios - 不要删除 UITable 的第一行

标签 ios uitableview core-data

我有一个由模型核心数据填充的 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) ,对吗?我尝试,如果我在编辑模式下按下删除不会发生任何事情......这是正确的还是有更好的方法?

最佳答案

这段代码可以工作,但我认为这是糟糕的 UI 设计。我认为用户不会明白他们无法删除第一行。更有可能的是,他们会认为应用程序未能进入编辑模式。

接口(interface)语法教导用户假设所有行都是相同的并且具有相同的行为。拥有一个特殊行会迫使用户停下来思考他们选择了哪一行,然后才能预测选择编辑将产生什么效果。让用户必须像这样跟踪应用程序状态是糟糕的 UI 设计。

如果您对第一行有特殊之处,您可能希望将该数据/函数放在 TableView 标题中而不是行中。

关于ios - 不要删除 UITable 的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5556432/

相关文章:

ios - 避免在 NSManagedObjectContext 中注册对象堆积(memleak)

ios - DatabaseReference中的key什么时候可以为nil?

ios - 如何在 Swift 中将变量值设置回之前的状态?

ios - 当按钮收到事件时,UITapGestureRecognizer 到 cellForRowAt

ios - 将 tableView 单元格展开和折叠到标签的文本

iphone - NSFetchedResultsController 的委托(delegate)方法处理

ios - 如何让我的 iphone/ios 应用程序在启动时打开一个 Safari 窗口

ios - 我的类(class)符合两个协议(protocol)——我如何为每个协议(protocol)设置不同的委托(delegate)?

uitableview - NSDateFormatter

ios - NSFetchedResultsController 使加载 View Controller 非常慢