Привязки какао: включить кнопку, если несколько текстовых полей имеют значения - PullRequest
2 голосов
/ 29 сентября 2011

У меня 5 кнопок и 5 текстовых полей. Я бы хотел настроить привязки так, чтобы кнопка 1 была активна, только если текстовые поля 2-5 имеют значения ..... кнопка 2 активна, только если текстовые поля 1 и 3-5 имеют значения и т. Д.

Я только начинаю узнавать о привязках какао. Я надеялся, что смогу использовать их для управления включением / отключением кнопок. Когда я попытался установить привязку Enable на одной из кнопок, он не позволил мне ссылаться на текстовые поля.

Возможно ли (и правильно) это делать с привязками?

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Вы не сможете ссылаться на текстовые поля непосредственно в привязках для биттона.

Чтобы обойти это, нужно создать подкласс NSObject - назовите его ButtonController - и иметь экземпляры vars для5 текстовых полей:

@inteface ButtonController : NSObject
{
    NSString *text1;
    NSString *text2;
    NSString *text3;
    ...
}

@property(nonatomic, retain) NSString *text1;
@property(nonatomic, retain) NSString *text2;
...

В файле xib создайте экземпляр объекта для ButtonController.Теперь вы можете привязать вещи к экземпляру контроллера кнопки.

Далее, связать все текстовые поля с соответствующими свойствами NSString.

Затем вы можете привязать свойство enabled кнопки к свойствам ButtonController.Когда вы свяжете свойство enabled кнопки 1, свяжите его с text2, установите флажок для valuetransformer и выберите «NSIsNotNil».Как только вы это сделаете, станет доступна вторая привязка enabled2, и вы сможете привязать ее к text3 и т. Д.

Я думаю, что это будет работать, но еще не пробовал.

0 голосов
/ 29 сентября 2011

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

...