2017-01-08 3 views
4

Я пытаюсь реализовать переключатель в OSX, Xcode 8, Swift 3. Я мог бы сделать это в прошлых итерациях Xcode с помощью группы переключателей. I верят, что должен быть способ группировки переключателей в Xcode, чтобы их выбор был эксклюзивным, но я не могу понять, как это сделать. Может кто-нибудь объяснить, как это сделать сейчас?Как реализовать переключатель в OSX, Xcode 8, Swift 3?

Apple documentation объясняет, что

NSButton сконфигурирован как переключатель (с установленным на -buttonType NSRadioButton), теперь будет работать в группе переключателей для приложений, связанных с 10.8 и позже. Чтобы кнопка работала в группе радиостанций , используйте одно и то же действие для каждого экземпляра NSButton и получите одинаковое представление для каждой кнопки. Когда эти условия соблюдены, , проверяя одну кнопку (путем изменения состояния-1 на 1), снимет все другие кнопки (установив их -стояние на 0).

... но я не смог в Interface Builder выяснить, как назначить одно и то же действие для каждого экземпляра NSButton. Я перетаскиваю из второй кнопки в действие в Xcode IDE и, похоже, не может выбрать одно и то же действие. Может ли кто-нибудь объяснить правильный процесс?

Большое спасибо заранее!

ответ

4

Похоже, что в среде IDE может возникнуть ошибка - она ​​запутывается, если действие имеет параметр типа Any. Вы можете обойти это путем изменения способа действия, чтобы принять NSButton отправителя явно:

demo gif

+0

Это супер полезно - это занимает минуту, пока я не идентифицированный в формате GIF, который вы любезно при условии, что вам необходимо подключить к «Первый ответчик». Благодаря! – Dribbler

+1

То, к чему я подключался, на самом деле является объектом делегирования приложения. Первый ответчик тоже может работать, в зависимости от того, как настроена цепочка ответчиков. Но я думаю, что довольно часто использовать объект контроллера вида (если у вас есть один, то есть - они более распространены в iOS, но в настоящее время эквивалент NSOS-контроля MacOS более полнозначен, чем раньше). – jtbandes