В моем случае сработало следующее решение.
Я надеюсь, что это может кому-то помочь.
Пожалуйста, поясните: вы имеете в виду, что вы хотите, чтобы Interface Builder предлагал вашим контроллерам представления подключать настраиваемые события, которые будет генерировать ваш подкласс представления (так же, как элементы управления Button позволяют вам подключаться Touch Inside и т. Д.)?
Если вам нужен этот тип функциональности, вам нужно будет использовать обобщенное свойство «делегат» в вашем представлении в сочетании с протоколом.
@protocol RadioDialDelegate
-(void)dialValueChanged:(id)sender
@end
@interface RadioDial
{
id<RadioDialDelegate> radioDelegate;
}
@property (nonatomic, assign) IBOutlet id<RadioDialDelegate> radioDelegate;
Это позволит контроллеру подключиться к представлению (при условии, что он реализует RadioDialDelegate) и получать любые события, выходящие из представления. В качестве альтернативы вы можете использовать нетипизированный делегат и в своем коде просмотра использовать вызов с поздним связыванием:
if([radioDelegate respondsToSelector:@selector(dialValueChanged:)]) {
[radioDelegate dialValueChanged:self];
}
Создайте метод в вашем контроллере представления (если ничего другого, у вас должен быть RootViewController в вашем проекте). Скажем, ваш метод -
-(void) buttonClicked { code code code }
. В заголовочном файле контроллера (например, RootViewController.h) вы затем помещаете:
-(IBAction) buttonClicked;
И в IB вы щелкаете правой кнопкой мыши по кнопке / переключателю / любому другому. Вы увидите список событий, и вы можете перетащить ОТ соединителя события, которое вы хотите, чтобы ваш контроллер получил, к объекту в IB, который представляет контроллер (возможно, First Responder). Это зависит от того, как настроена ваша структура IB, но она должна быть простой.
Другой альтернативой является научиться создавать UIViews программно и на время забыть о IB. Мнения по поводу того, лучше ли научиться пользоваться IB с самого начала, разделились, или Лучше научиться делать все в коде и отложить IB на потом. В любом случае в какой-то момент необходимо изучить оба способа настройки интерфейса.