Как добавить кнопку блокировки, которая связывает два ползунка вместе в Интерфейсном Разработчике? - PullRequest
1 голос
/ 24 февраля 2012

Я хочу добавить кнопку, которая при нажатии блокирует два ползунка вместе, так что значения для двух ползунков всегда будут одинаковыми.

У меня есть решение для этого с использованием кода, но мне интересно, есть ли способ сделать это только с помощью построителя интерфейса.

Я обеспокоен тем, что основанное на коде решение, при котором один слайдер может отставать от другого в средах с высокой загрузкой ЦП.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

Нет, нет способа сделать это только с помощью Interface Builder.

На самом деле все становится кодом в конце, насколько я понимаю, Interface Builder был создан для того, чтобы сократить время разработки, а не обязательноЧтобы повысить производительность, я нашел интересную цитату на сайте Apple о NIB:

XCode работает вместе с этими платформами, чтобы помочь вам подключить элементы управления вашего пользовательского интерфейса к объектам в вашем проекте,ответить на эти элементы управления .

С учетом этого все станет кодом (некоторого уровня). О файлах NIB .

Во время выполнения эти описания используются для воссоздания объектов и их конфигурации внутри вашего приложения.Когда вы загружаете nib-файл во время выполнения, вы получаете точную копию объектов, которые были в вашем документе XCode.Код загрузки пера создает экземпляры объектов, настраивает их и восстанавливает любые межобъектные соединения, которые вы создали в своем файле пера.

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

Просто любопытно, почему вы не захотите использовать код?

2 голосов
/ 24 февраля 2012

Объединить два ползунка в IB очень просто.И я никогда не видел отставания.Зависимость этой блокировки от нажатия кнопки - это еще одна история, которая должна быть реализована в коде, но она не будет слишком сложной.Предполагая, что у вас есть розетки, подключенные в IB и объявленные в контроллере

-(IBAction)lockSliders:(id)sender {
    [slider1 setContinuous:YES];
    [slider1 takeIntegerValueFrom:slider2]; // or takeFloatValueFrom or takeDoubleValueFrom
    [slider2 setContinuous:YES];
    [slider2 takeIntegerValueFrom:slider1];
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...