【问题标题】:Warning when setting a delegate设置委托时的警告
【发布时间】:2013-04-29 10:05:12
【问题描述】:

我正在尝试使用 segue 将数据传回,并遵循以下答案:How to Pass information Back in iOS when reversing a Segue?

但是,当我尝试将这一行放入时:

@property (nonatomic) id<MyDataDelegate> delegate;

我收到以下警告:

当我尝试像这样放入第一个视图控制器时:

@interface ContainerViewController : UIViewController <MyDataDelegate>

我收到错误“Cannot find protocol declaration for 'MyDataDelegate'”并且我确实包含了另一个头文件...

【问题讨论】:

  • @property(weak,nonatomic) id delegate;

标签: iphone ios objective-c


【解决方案1】:

从错误消息看来,您正在将该属性添加到UIPageViewController 的子类中。但是UIPageViewController 已经有一个不同类型的delegate 属性。

因此,您需要将您的属性重命名为其他名称,或者声明 MyDataDelegate 以符合 UIPageViewControllerDelegate 以便您的属性重新声明与基类版本兼容:

@protocol MyDataDelegate <UIPageViewControllerDelegate>

...

@end

您还需要使用weak 属性声明您的属性。

【讨论】:

  • 这确实修复了警告,但是当我添加 @interface ContainerViewController : UIViewController 我仍然收到我在问题中所说的错误
  • @nonuma 如果你的代理头文件也包含控制器头文件,那么你就有了循环依赖。确保您的协议不包含控制器的标头(可能需要前向声明 @class ...)。
  • @Mike Weller 我现在从我之前说的链接中做了所有事情,现在我被困在这里:PageScrollViewController.delegate = self;编译器告诉我他在 PageScrollViewController 类型的对象上找不到该属性...但我确实将它添加为属性?
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多