协议方法没有被调用,显示委托'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; 
} 
+0

究竟是你想要做什么?你想要访问什么? – Durgaprasad

+0

“ShowPickerVC”是popOver,来自“someViewController”...“ShowPickerVC”有一个选择器,用户在选择器中选择数据,我希望选定的数据被传递给“someViewController”... – DevCali

+0

我是不知道为什么,但这段代码在iPhone中正常工作,但不与iPad可能是因为popOver? – DevCali

我不能有任何错误,从你的代码,但我建议你要清楚,当你创建的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]; 
    } 

} 

有关How to create/use of Protocol.的详细信息

+0

感谢您的回复......问题在于“委托”总是显示为零,这是为什么它不会调用该方法...是否与popOver有关?此代码可以正常使用iPhone ... – DevCali