call method in a subclass of UIView
I've got a UIViewController and an own class, a subclass of UIView.
In my ViewController I make a instance of the uiview. If I tap the uiview a function gets called within it and an overlay appears. TO get rid of that overlay later the user has to tap somewhere on the screen(besides the instance of my class)
How do I tell my class to dismiss the overlay? I already thought of delegate.
So m开发者_运维技巧y thoughts were to make a MyUIViewControllerdelegate. If my viewcontroller receives a tap the delegate should be called. THe only problem is how do I tell my subclass that it should receive that delegate? I Have no instance of my viewcontroller in my subclass so I can not set the delegate.
Any Ideas? Hope my problem is clear :)
Thanks a lot
The only problem is how do I tell my subclass that it should receive that delegate? I Have no instance of my viewcontroller in my subclass so I can not set the delegate.
MyUIView.h:
@protocol MyUIViewDelegate;
@interface MyUIView : UIView
{
...
id<MyUIViewDelegate> delegate;
...
}
...
@property (nonatomic, assign) id<MyUIViewDelegate> delegate;
...
@end
@protocol MyUIViewDelegate <NSObject>
- (void)myUIViewDidFinish:(MyUIView*)myUIView;
@end
MyUIView.m:
...
@synthesize delegate;
...
- (void)dismiss
{
[delegate myUIViewDidFinish:self];
}
MyUIViewController.h:
#import "MyUIView.h"
@interface MyUIViewController : UIViewController <MyUIViewDelegate>
{
...
MyUIView* myOverlay;
...
}
...
@property (nonatomic, retain) IBOutlet MyUIView* myOverlay;
...
@end
MyUIViewController.m:
...
@synthesize myOverlay;
...
- (void)dealloc
{
...
[myOverlay release];
...
[super dealloc];
}
...
- (void)viewDidLoad
{
[super viewDidLoad];
...
myOverlay.delegate = self;
...
}
...
- (void)showMyUIView
{
// ... show myOverlay ...
}
...
#pragma mark MyUIViewDelegate Methods
- (void)myUIViewDidFinish:(MyUIView*)myUIView
{
// ... hide myOverlay ...
}
精彩评论