从父视图控制 NSTabViewController

Control a NSTabViewController from parent View

提问人:Mike Nathas 提问时间:5/3/2016 最后编辑:pkambMike Nathas 更新时间:9/15/2018 访问量:1637

问:

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

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

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

但 TabView 不会更改视图。

我用错了 API 吗?

Swift Cocoa 控制器 nstabview

评论


答:

4赞 mangerlahn 5/4/2016 #1

我找到了一篇关于这个话题的论坛帖子。将索引与使用 .tabViewNSTabViewController

他们的解决方案是通过控制器本身而不是其 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 应专门在此上下文中使用。