Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

What's the best way for registering events for my UIView subclass, so that I can connect them to IBAction-s in interface builder?

Currently I've just got a standard UIView dropped onto my main view and I've set the class to "RadioDial" (my custom class). This displays the view fine, but I have no idea how to get events out of it.

Thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
681 views
Welcome To Ask or Share your Answers For Others

1 Answer

Please clarify: do you mean that you would like Interface Builder to offer your view controllers to wire up custom events that your view subclass will be emitting (much like the Button controls allow you to wire up Touch Inside, etc)?

If you need this type of functionality, you will need to use a generalized 'delegate' property on your View combined with a protocol.

@protocol RadioDialDelegate
-(void)dialValueChanged:(id)sender
@end

@interface RadioDial
{
    id<RadioDialDelegate> radioDelegate;
}
@property (nonatomic, assign) IBOutlet id<RadioDialDelegate> radioDelegate;

This will allow the controller to wire up to the view (assuming it implements RadioDialDelegate) and receive any events that come out of the view. Alternatively, you can use an untyped delegate and in your View code, use a late bound call:

if([radioDelegate respondsToSelector:@selector(dialValueChanged:)]) {
    [radioDelegate dialValueChanged:self];
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...