rei*_*man 9 iphone cocoa-touch objective-c uiviewcontroller uiview
有一种方法可以从UIView对象获取视图控制器引用吗?我需要这样的东西:
MyParentViewController *myParentViewController = [self.view.superview controller];
Run Code Online (Sandbox Code Playgroud)
use*_*008 16
您可以使用该-nextResponder方法执行此操作.根据http://developer.apple.com/library/ios/documentation/uikit/reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/nextResponder,"UIView通过返回实现此方法管理它的UIViewController对象(如果有的话)或超级视图(如果没有)
UIView默认没有引用UIViewController.您可以将它添加到UIView子类并在UIViewController中创建UIView时设置它.
如果您正在寻找viewcontroller的父级,每个UIViewController都有属性parentViewController,但如果您想从UIView访问它,您需要首先访问您的UIViewController.
你可以看到例如如何在你的UIView的子类来创建引用您的UIViewController和如何/在哪里设置它在视图控制器编程指南iPhone,请参见创建视图编程中定义自定义视图控制器类,这里是例子有关更多详细信息,请参阅链接的Metronome示例.
- (void)loadView {
self.wantsFullScreenLayout = YES;
MetronomeView *view = [[MetronomeView alloc]
initWithFrame:[UIScreen mainScreen].applicationFrame];
view.metronomeViewController = self;
self.view = view;
self.metronomeView = view;
[view release];
}
Run Code Online (Sandbox Code Playgroud)
在标题中:
@interface MetronomeView : UIView {
MetronomeViewController *metronomeViewController;
...
Run Code Online (Sandbox Code Playgroud)