Iphone 协议方法未被调用,显示委托';无';

Iphone 协议方法未被调用,显示委托';无';,iphone,ios,objective-c,protocols,Iphone,Ios,Objective C,Protocols,我正在开发一个iPad应用程序,我和代表有问题。。。无法调用协议方法。我不确定我遗漏了什么,这是我的代码 @protocol pickerLabelProtocol <NSObject> - (void)selectedPickerData:(UILabel *)sender; @end @interface showPickerVC : UIViewController @property (nonatomic, strong) id <pickerLabelProtoco

我正在开发一个iPad应用程序,我和代表有问题。。。无法调用协议方法。我不确定我遗漏了什么,这是我的代码

@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;
}
@协议选择器标签协议
-(void)selectedPickerData:(UILabel*)发送方;
@结束
@界面showPickerVC:UIViewController
@属性(非原子,强)id委托;
@结束
@pickervc的实现
-(无效)视图将消失:(BOOL)已设置动画
{
[超级视图将消失:动画];
//我使用了断点,“委托”由于某种原因总是为零?
[self.delegate selectedPickerData:self.Main标签];
}
----------------------
@接口someViewController:UIViewController
@属性(非原子,强)showPickerVC*showPicker;
@结束
@视图控制器的实现
-(void)selectedPickerData:(UILabel*)发件人
{
//协议方法
}
-(无效)viewDidLoad
{
[超级视图下载];
self.showPicker=[[showPickerVC alloc]init];
self.showPicker.delegate=self;
}

我不能从您的代码中看出任何错误,但我建议您在创建
showPickerVC
的对象时要弄清楚,添加它是
委托
self

诸如此类

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];
    }

}

有关

的更多信息,我无法从您的代码中得到任何错误,但我建议您明确何时创建
showPickerVC的对象
添加它的
delegate
self

诸如此类

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];
    }

}

有关您想做什么的详细信息

?你想访问什么?“ShowPickerVC”是一个popOver,来自“someViewController”。。。“ShowPickerVC”有一个选择器,用户在选择器中选择数据,我想将所选数据传递给“someViewController”…我不知道为什么,但这段代码在iPhone中运行良好,但在iPad中运行不正常,可能是因为popOver?显示ShowPickerVC的代码在哪里?ShowPickerVC通过popOver Segue显示。。。这很好,问题是在“ViewWillEnglishe”中,代理显示为零……这正是您想要做的?你想访问什么?“ShowPickerVC”是一个popOver,来自“someViewController”。。。“ShowPickerVC”有一个选择器,用户在选择器中选择数据,我想将所选数据传递给“someViewController”…我不知道为什么,但这段代码在iPhone中运行良好,但在iPad中运行不正常,可能是因为popOver?显示ShowPickerVC的代码在哪里?ShowPickerVC通过popOver Segue显示。。。这很好,问题是在“视图将消失”中,代理显示为零…感谢您的答复。。。问题是“delegate”总是显示nil,这就是为什么它不调用该方法。。。这和流行音乐有关吗?此代码适用于iphone…感谢您的回复。。。问题是“delegate”总是显示nil,这就是为什么它不调用该方法。。。这和流行音乐有关吗?此代码适用于iphone。。。