我正在从Nib创建自定义UIView子类( shareView )。 我为 shareView 创建了一个自定义协议,如下所示:
@protocol sharePopupDelegate
@required
-(void)userPublishedContent;
-(void)userAbortedPublish;
@end
@interface shareView : UIView
{
id<sharePopupDelegate> delegate;
}
在我的main.storyboard中,我创建了一个自定义的UIViewController myViewController ,其中包含 shareView 视图实例,名为&#34; popup &#34;内部。
所以现在我得到了
@property (weak, nonatomic) IBOutlet shareView *popup;
我现在想从我声明的 shareView 方法委派 myViewController ,所以我做了
self.popup.delegate = self;
在myViewController中,但协议&#39; myViewController中没有调用方法。
所以我正确地看到 shareView 实例,但无法与其委托进行交互。
你能帮帮我吗?提前致谢
答案 0 :(得分:0)
确保您在myViewController中声明了协议。
例如
@interface MyViewController : UIViewCOntroller <sharePopupDelegate>
答案 1 :(得分:0)
在代码的这一部分:
@interface shareView : UIView
{
id<sharePopupDelegate> delegate;
}
您正在创建对委托的强引用,这不是您大多数时候想要的。将其更改为:
@interface shareView : UIView
@property(weak, nonatomic) id<sharePopupDelegate> delegate;
shareView类本身必须有一些方法来了解用户何时发布内容。也许你有一个动作链接到shareView,它调用shareView类中的方法。例如:
- (void)publishButtonTapped {
// some code
}
您要做的是让代理人知道该方法,如下所示:
- (void)publishButtonTapped {
// some code
[self.delegate userPublishedContent];
}
然后用户取消的任何操作:
- (void)cancelButtonTapped {
// some code
[self.delegate userAbortedPublish];
}
希望这有帮助。