【问题标题】:Protocol method does not get invoked, shows delegate 'nil'未调用协议方法,显示委托“nil”
【发布时间】:2013-06-22 05:06:26
【问题描述】:

我正在开发一个 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;
}

【问题讨论】:

  • 您到底想做什么?你想访问什么?
  • “ShowPickerVC”是一个弹出窗口,来自“someViewController”...“ShowPickerVC”有一个选择器,用户在选择器中选择数据,我希望将所选数据传递给“someViewController” ...
  • 我不知道为什么,但是这段代码在 iPhone 上运行良好,但在 iPad 上却不行,可能是因为 popOver??
  • 显示showPickerVC的代码在哪里?
  • showPickerVC 是通过 popOver Segue 呈现的...效果很好,问题是在“viewWillDisappear”中,代表显示 nil...

标签: iphone ios objective-c protocols


【解决方案1】:

我不能从你的代码中得到任何错误,但我建议你在创建 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];
    }

}

更多关于How to create/use of Protocol.的信息

【讨论】:

  • 感谢您的回复...问题是“delegate”总是显示为nil,这就是它不调用该方法的原因...它与popOver有关吗?此代码适用于 iphone...
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多