从父视图控制NSTabViewController

时间:2016-05-03 13:30:46

标签: swift cocoa nsviewcontroller nstabview

(我正在使用故事板和swift。)

我目前有一个NSWindowController,它有一个NSTabViewController作为contentViewController。 我现在正尝试使用

通过代码更改NSWindowController中的Tabs
let tabController = self.contentViewController as! NSTabViewController
tabController.tabView.selectTabViewItemAtIndex(1)

但TabView不会更改视图。

我使用API​​错了吗?

1 个答案:

答案 0 :(得分:3)

我找到了关于此主题的forum post。将tabView索引与使用NSTabViewController一起设置时似乎存在错误。

他们的解决方案是通过控制器本身而不是tabView选择选项卡。 这可以通过使用selectedTabViewItemIndex属性来完成。

所以你的代码如下:

if let contentViewController = self.contentViewController as? NSTabViewController {
    contentViewController.selectedTabViewItemIndex = 1
}

我要对此提出一个雷达,你也应该这样做。这似乎是一个错误,而不是滥用API。

2016年10月11日更新
问题似乎部分得到解决。 (macOS Sierra 10.12.1)该方法现在选择选项卡,但标签栏中的选择不会更新..

2016年11月16日更新
根据Apple的说法,这不是一个错误,而是预期的行为。他们正在更新文档。

  

使用tabViewController时,控制器拥有选项卡UI(分段控件,工具栏等)而不是tabView本身。实际上,tabView没有选项卡样式,因此它只处理内容视图之间的切换。

     

我们正在使用内部错误报告29184908来跟踪更新文档,指出selectedTabViewItemIndex应该仅在此上下文中使用。