Я создал пользовательский UIView с кнопками выше, этот вид открывается как всплывающее окно в viewcontroller. Я хочу, чтобы контроллер просмотра перехватывал нажатие кнопок, поэтому я создал методы протокола, но делегаты в контроллере представления никогда не вызываются.delegate стать nil iOS
Протокол:
@protocol InsertDelegate <NSObject>
-(void)addNode:(double)x pointY:(double)y radius:(double)r forw:(int)forw;
-(void)cancelView:(UIView*)view;
@end
В AddNewNode.h
@interface AddNewNode : UIView
@property (assign, nonatomic)id <InsertDelegate> delegate;
- (IBAction)actionCancel:(id)sender;
- (IBAction)actionAdd:(id)sender;
@end
В AddNewNode.m
- (IBAction)actionCancel:(id)sender { //this action is connect with storyboard
NSLog(@"%@", self.delegate);
//(null)
[self.delegate cancelView:self];
}
- (IBAction)actionAdd:(id)sender { //this action is connect with storyboard
NSLog(@"%@", self.delegate);
//(null)
[self.delegate addNode:x pointY:y radius:r forw:f];
}
В ViewController.h:
@interface ViewController : UIViewController <InsertDelegate>
В ViewController.m
(IBAction)addNewNode:(id)sender {
AddNewNode * addRowView =[[AddNewNode alloc]init];
addRowView.delegate=self;
[self.view addSubview: addRowView];
}
//delegate methods never called
-(void)addNode:(double)x pointY:(double)y radius:(double)r forw:(int)forw{
}
-(void)cancelView:(UIView*)view{
}
В UIView обычае self.delegate утратившие и я не понимаю, почему
вы используете '@ synthesize' для вашего 'делегата '? – mkeremkeskin
Я сделал это сейчас, но результат тот же, методы не называются –
Был ли ваш IBActions? Можете ли вы это проверить дважды? –