【问题标题】:How to know is a row in table view is added如何知道表格视图中是否添加了一行
【发布时间】:2012-07-28 19:51:14
【问题描述】:

我有一个使用核心数据的项目,其中有一个数组控制器保存表视图的数据(使用核心数据创建)。
我需要将添加的任何行的第一列设置为可编辑(使用按钮触发插入)。
我试图在有方法的地方实现 NSTableViewDelegate:

- (void) tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:

但问题是每次我添加一行时,这个方法不会被调用一次,而是每行调用一次,所以如果我有一个 10 行的表并且我插入一个新的,那么该方法会被调用 11次。所以我真的不知道何时添加了新对象。
我该如何解决这个问题?

【问题讨论】:

    标签: objective-c delegates nstableview


    【解决方案1】:

    我假设您正在使用 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 来执行插入操作。在此方法中,记下表格视图中对象的当前计数。而在 didAddRowView 方法中只查询 tableView 对象中的行数,如果总和比初始计数多 1,那么您就知道该行已被添加。

    老实说,尽管您知道当用户点击按钮以将行添加到表格视图时何时添加行,所以您应该假设已插入一行,而不是采用这种不优雅的方式做它。我建议这样做是因为行插入几乎是即时的(除非您正在执行某种导致延迟的大型操作)。

    【讨论】:

    • 我没有使用任何代码进行插入,我只是使用了一个数组控制器,添加按钮与数组控制器绑定了控制器键:canInsert。
    • 这一切都是用核心数据和界面构建器完成的,没有代码。
    • 嗯,这代表了当时使用 xib 的局限性。我建议您将 xib 中的添加按钮与代码联系起来,以便您确切知道何时点击它。完成后,您可以假设在按下按钮时添加了一行,只要 Core Data 没有报告错误。
    • (另外,这里是NSTableView,不是UITableView)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多