NSTableView基于另一个表的初始设置

时间:2011-05-12 19:22:46

标签: objective-c cocoa nstableview

这似乎应该是这么简单的事情,但我很难过。我有一个有两个tableviews的视图。第二个表填充了基于第一个表的选择的信息。第二个表必须根据第一个表中的选择更改可见列的数量。

为了实现这一点,我为第二个表设置了委托并实现了tableViewSelectionDidChange。效果很好所以当在第一个表中更改选择时,列将在第二个表中更新。

但这是问题所在。首次打开视图时,我需要根据第一个表的初始选择设置第二个表的可见列,但我似乎无法获得第一个表的初始选择。 awakeFromNib不返回选择,也不返回initWithNibName。我认为在填充第一个表之前会触发它们。

所以这就是问题所在。如何在第一次显示视图时如何获得第一个表的初始选择。

全部谢谢

2 个答案:

答案 0 :(得分:0)

不知道您使用什么来将数据提供给tableView,一个基本的答案是[tableView selectedRow]。 docs:返回选择或添加到选择的最后一行的索引

然而,您的问题的上下文说明您不知道需要数据源或数组控制器,因为bavarious已做出响应。

如果是这样,这里有link可能有用。

答案 1 :(得分:0)

解决了它。如果它可以帮助其他任何人或满足任何人的好奇心,这就是解决方案。

另外,我为在原始问题中没有包含足够信息而道歉。

有两个表管理数字表,第一个是表选择,它是主/详细类型的视图。选择表时,其数据显示在文本字段中,其中一个是列数。我的tableViewSelectionDidChange方法从文本字段中获取此数字,并在第二个表中设置列。

tableViewSelectionDidChange确实会在初始视图加载时被触发,但由于文本字段为空,因此似乎未在该点填充文本字段。加载视图后它可以正常工作,但在初始加载时,字段为空。

所以我所做的只是更改tableViewSelectionDidChange以从数组控制器的托管对象而不是文本字段中获取值。现在效果很好。

我从.NET到Cocoa的旅程中的另一个障碍和更多的学习。

感谢您的帮助,我将确保在下一个问题中包含所有相关信息。