4

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

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

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

但 TabView 不会改变视图。

我是否使用了错误的 API?

4

1 回答 1

4

我找到了一个关于这个主题的论坛帖子。tabView结合 using设置索引时似乎存在错误NSTabViewController

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

所以你的代码如下:

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

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

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

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

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

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

于 2016-05-03T18:59:41.697 回答