Управлять NSTabViewController из родительского представления

(Я использую раскадровки и Swift.)

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

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

но TabView не меняет вид.

Я использую API неправильно?

1 ответ

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

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

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

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

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

Обновление 10/10/2016:
Проблема, кажется, решена частично. (macOS Sierra 10.12.1) Теперь метод выбирает вкладку, но выбор в панели вкладок не обновляется.

Обновление 16.11.2016:
По словам Apple, это не ошибка, а предполагаемое поведение. Они обновляют документацию.

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

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

Другие вопросы по тегам