【问题标题】:Problem getting selected row index in NSTableView with filter predicate使用过滤谓词在 NSTableView 中获取选定行索引的问题
【发布时间】:2009-09-26 01:05:34
【问题描述】:

我不确定我的措辞是否正确,但基本上我在我的主应用程序委托中执行此操作:

Application *app = [[Application alloc] initWithApplication:fullPath]

Application 类有一个 initWithApplication 方法,它接收应用程序的路径,然后设置 appPath、名称等属性。然后我将新的“app”对象添加到应用程序 NSMutableArray:

if (app) [applications addObject: app];

NSArrayController 的内容数组绑定到应用程序 NSMutableArray,然后在 NSArrayController 中设置各种键(appPath、name 等)。然后我有一个表格视图,其中各种列绑定到不同的属性,例如一列名称,一列路径等。

然后我有一个启动按钮,用于启动在表格视图中选择的应用程序。为此,我使用以下代码:

Application *app = [applications objectAtIndex:[tableView selectedRow]];

然后我只是使用“app.appPath”作为对当前选中项的路径的引用。这工作正常。当使用 filterPredicate 过滤表视图内容时,问题就出现了。基本上它会过滤掉表格视图中的所有应用程序,只留下名称包含在搜索框中键入的短语的应用程序。

上面的方法不起作用,因为它获取了表格视图中项目的索引,并且由于所有项目都不在表格视图中,因此计数混乱。例如,假设我有一个名为 MyApp.app 的应用程序,它位于应用程序数组的索引 25 处。

上面的代码运行良好,因为 tableView 和 applications 数组具有相同数量的对象。但是,过滤掉表格视图的内容会导致对象数量有所不同,因此会启动错误的应用程序。

我希望我的解释不会太混乱,但很难解释。有什么办法吗?

谢谢

【问题讨论】:

    标签: binding nsmutablearray nstableview nsarraycontroller


    【解决方案1】:

    对于任何想知道的人来说,解决方案都非常简单:

    [[arrayController 选择] valueForKey:@"appPath"]

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-23
      • 2019-03-17
      • 2019-10-24
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多