以编程方式设置NSOutlineView的选择(并获得NSTableView的选择)

时间:2011-06-21 14:28:42

标签: objective-c cocoa nstableview nsoutlineview

我想在另一个类中以编程方式设置我的OutlineView选择。

我可以通过NSOutlineView访问[[appDelegate outlineViewController] outlineView]的实例。

这背后的想法是,我有一个项目列表的视图(也在 outlineview 中),我希望用户能够点击视图中的项目,以便更改 outlineviews 的选择,从而显示(所选项目的)新视图。

再次,如何以编程方式更改OutlineView的选择?

如果问题看起来不清楚,请告诉我我该怎么做才能让它更容易理解。

2 个答案:

答案 0 :(得分:7)

如果我理解正确,我认为您正在寻找NSOutlineView的{​​{3}}方法。请注意,NSOutlineViewNSTableView的子类。

答案 1 :(得分:2)

对于我的情况,
我有一个NSTableView项目来自“项目列表视图”,
OutlineView相似:

  1. 家长A.
    • smth
    • smth
    • smth
    • 。 。
  2. 家长B
    • smth
    • smth
    • 。 。
  3. 项目列表视图
    • item1
    • item2
    • 项目3
  4. 父A和B并不重要,但他们在此证明,在“项目列表视图”之前没有固定数量的行。

    所以,我做的是,我用过 - (void)tableViewSelectionDidChange:(NSNotification *)aNotification
    我的NSTableView委托中的方法和方法使用
    NSTableView *tableView = [aNotification object];
    NSInteger clickedRowInTableView = [tableView selectedRow];
    在我的tableView中获取新选定的行。

    之后我获得了“项目列表视图”的行号(它动态获取它,具体取决于“父母”是否被扩展,以及他们有多少孩子),还扩展了“项目列表视图” ,如果它还没有扩大。

    接下来,我将所有数字加在一起:clickedRowInTableView + rowNrOfItemsListView + 1,1为“项目列表视图”行。

    然后我使用NSOutlineView的{​​{1}}(感谢Nate指出),在– selectRowIndexes:byExtendingSelection:中设置选定的行。

    我希望这对那些与我同样情况的人有所帮助。