2016-05-03 16 views
1

(я использую раскадровку и быстрые.)Контролируйте NSTabViewController от родительского вида

настоящее время у меня NSWindowController, который имеет NSTabViewController как contentViewController. Я сейчас пытаюсь изменить вкладки из NSWindowController с помощью кода, используя

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

но TabView не меняет вид. Я использую API неправильно?

Спасибо!

+0

Я обновил свой ответ. – mangerlahn

ответ

1

Я нашел forum post по этой теме. Кажется, что ошибка при установке индекса tabView в сочетании с использованием NSTabViewController.

Их решение состоит в том, чтобы выбрать вкладку через сам контроллер, а не в tabView. Это можно сделать, используя свойство selectedTabViewItemIndex.

Так что ваш код будет следующим:

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

Я собираюсь подать радар на это, и вы должны сделать то же самое. Это действительно кажется ошибкой, а не неправильным использованием API.

Update 11/10/2016:
Проблема, кажется, фиксируется частично. (MacOS Sierra 10.12.1) метод в настоящее время выбирает вкладку, но выбор в панели вкладок не обновляется ..

Update 11/16/2016:
Согласно Apple, это не ошибка, но предполагаемое поведение. Они обновляют документацию.

При использовании tabViewController контроллер владеет интерфейсом вкладки (сегментированный элемент управления, панель инструментов и т. Д.), А не сам tabView. Фактически, tabView имеет стиль без табуляции, поэтому он обрабатывает только переключение между представлениями контента.

Мы используем внутренний отчет об ошибках 29184908, чтобы отслеживать обновление документации, в которой указано, что selectedTabViewItemIndex должен использоваться исключительно в этом контексте.