Я ОЧЕНЬ опаздываю на это, но придумала другой метод и просто проверила его в своем приложении. Это работает, так что я собираюсь поделиться им с каждым, кто найдет этот вопрос в будущем.
По сути, вы хотите создать свойство БЕЗ соответствующего значения в вашем контроллере
@property (readonly) BOOL enableProperty;
Это означает, что на самом деле нет
BOOL enableProperty;
определено в заголовочном файле или в любом месте
тогда, вместо того, чтобы синтезировать его, просто напишите свой собственный метод получения и поместите туда свое условие
- (BOOL) enableProperty{
return (condition);
}
Третий шаг: всякий раз, когда есть вероятность, что ваше состояние изменится, сообщите об этом.
- (void) someMethod{
//.... Some code
[self willChangeValueForKey:@"enableProperty"];
[Thisline mightChange:theCondition];
[self didChangeValueForKey:@"enableProperty"];
//.... Some other code
}
четвертый шаг: в IB свяжите свойство enabled вашего элемента управления с этим «поддельным» свойством.
Наслаждайтесь! ;)