协议方法没有被调用,显示委托'nil'
问题描述:
我正在研究一个iPad应用程序,我遇到了委托问题......协议方法没有被调用。我不确定我错过了什么,这里是我的代码。协议方法没有被调用,显示委托'nil'
@protocol pickerLabelProtocol <NSObject>
- (void)selectedPickerData:(UILabel *)sender;
@end
@interface showPickerVC : UIViewController
@property (nonatomic, strong) id <pickerLabelProtocol> delegate;
@end
@implementation showPickerVC
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
//i used breakpoint, the 'delegate' is always nil for some reason?
[self.delegate selectedPickerData:self.mainLabel];
}
----------------------
@interface someViewController : UIViewController <pickerLabelProtocol>
@property (nonatomic, strong) showPickerVC *showPicker;
@end
@implementation someViewController
- (void)selectedPickerData:(UILabel *)sender
{
//protocol method
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.showPicker = [[showPickerVC alloc]init];
self.showPicker.delegate = self;
}
答
我不能有任何错误,从你的代码,但我建议你要清楚,当你创建的showPickerVC
对象添加它delegate
自
诸如此类有关,
showPickerVC *obj = [[showPickerVC alloc] init];
obj.delegate = self; /// YOur protocol delegate
.
.
[self presentModalViewController:obj animated:YES];
并且下面添加代码
@implementation showPickerVC
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if([self.delegate respondsToSelector:@selector(selectedPickerData:)])
{
[self.delegate selectedPickerData:self.mainLabel];
}
}
+0
感谢您的回复......问题在于“委托”总是显示为零,这是为什么它不会调用该方法...是否与popOver有关?此代码可以正常使用iPhone ... – DevCali
究竟是你想要做什么?你想要访问什么? – Durgaprasad
“ShowPickerVC”是popOver,来自“someViewController”...“ShowPickerVC”有一个选择器,用户在选择器中选择数据,我希望选定的数据被传递给“someViewController”... – DevCali
我是不知道为什么,但这段代码在iPhone中正常工作,但不与iPad可能是因为popOver? – DevCali