iPhone:从子视图调用父/超级方法

Bur*_*000 11 iphone cocoa-touch superview

希望有人可以帮助我,因为我已经坚持了好几个小时.

我正在尝试制作一本图画书.我有一个视图,这是我的容器,我通过使用addsubview添加子视图.

在子视图中,我有滑动手势等,我想在父视图中触发off方法.我找出了如何触发委托,但我不能让委托触发父视图.我已经阅读了10种不同的方法,但没有工作.

我现在对超级视图的含义感到非常困惑.只是为了混淆事项,委托有一个tabcontroller,父视图是tab按钮1

我试过了

[self.view.superview method]
[self.superview method]
Run Code Online (Sandbox Code Playgroud)

在委托上我尝试了self.tabcontroller.parentviewcontroller,selectedview,super view.super

更新:子视图需要独立于父视图作为其可重用的视图.另外我没有将父视图设置为superview,因为我只是认为superview是一个带子视图的视图(请不要杀了我).那么也许我只需要将父视图设置为superview?

Vde*_*edT 23

执行此类操作的正确方法是使用协议和委托模式.

定义类似的协议

@protocol subViewDelegate
   -(void)somethingHappened:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)

然后在你的superview中实现该协议:

@interface superView:UIViewController<subViewDelegate> {
...
}
...
@end
Run Code Online (Sandbox Code Playgroud)

像这样在SubView中定义一个委托属性

@interface subView : UIView {
   id<subViewDelegate> delegate;
   ...
}
@propery (nonatomic, assign) id<subViewDelegate> delegate;
...
@end
Run Code Online (Sandbox Code Playgroud)

在子视图中,像这样调用委托

[self.delegate somethingHappened :self];
Run Code Online (Sandbox Code Playgroud)