(我正在使用 Storyboard和快速。)

我目前有一个 NSWindowController,它有一个 NSTabViewController 作为 contentViewController。
我现在正在尝试通过使用代码更改 NSWindowController 中的选项卡

let tabController = self.contentViewController as! NSTabViewController
tabController.tabView.selectTabViewItemAtIndex(1)

但 TabView 不会改变 View 。

我使用的 API 错了吗?

最佳答案

我找到了一个关于这个话题的 forum post。将 tabView 索引与使用 NSTabViewController 结合使用时,似乎存在错误。
他们的解决方案是通过 Controller 本身而不是它的 tabView 来选择选项卡。
这可以通过使用 selectedTabViewItemIndex 属性来完成。
所以你的代码如下:

if let contentViewController = self.contentViewController as? NSTabViewController {
    contentViewController.selectedTabViewItemIndex = 1
}
我将对此进行调查,您也应该这样做。这似乎真的是一个错误,而不是对 API 的滥用。

更新 11/10/2016 :
该问题似乎已部分解决。 (macOS Sierra 10.12.1) 该方法现在选择选项卡,但选项卡栏中的选择不会更新.. swift - 从父 View 控制 NSTabViewController-LMLPHP
更新 11/16/2016 :
根据 Apple 的说法,这不是错误,而是预期的行为。他们正在更新文档。

关于swift - 从父 View 控制 NSTabViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37005622/

10-10 20:49