2011-01-27 31 views
34

当我想访问当前UIView的父母UIView我通过分配父UIView对象当前视图对象财产申报在当前UIViewUIView的对象和访问它。访问父视图 - iPhone的SDK

有没有什么办法摆脱这一点,并直接调用父视图的方法或属性?

我也试过(parentView *) self.view.superview但没有帮助。

它给出错误而调用函数这个对象

[UIVIew unrecognized selector...... 

非常感谢,
导航

回答

67

如果您是直接从UIView(而不是UIViewController)调用这一点,应该是self.superview而不是self.view.superview

+0

它是UIViewController。但我想它不应该为UIView工作,因为对象是相同的,都是UIView – 2011-01-27 14:28:36

+2

请注意,这返回nil在ViewDidLoad。它只是在viewDidAfter和它之后才有用的。 – 2013-12-03 22:28:16

0

@ Naveed:这是您可以用于任何视图的通用代码,无论它是父视图还是子视图,只需更改要按的按钮名称以及您想要转到的视图名称即可。例如在后退按钮上按u想要进入库视图然后编写此代码 -

-(IBAction)backButtonPressed:(id) sender 
{ 
     llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil]; 
    libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:libraryview animated:YES]; 
    [libraryview release]; 
} 

让我知道你的问题是否解决了。

0

我能想到的是,你想从视图中调用viewcontroller的方法,你添加到viewcontroller的视图。

现在你有两个选择,你可以将视图控制器设置为视图的委托,然后通过[delegate performSelector:]方法调用viewcontroller的方法。

另一种方法是访问视图的超级视图,然后获取它的控制器。你不能直接做到这一点,如果你能做到这一点,就会挫败MVC的全部目的。

但是,仍有出路,在这里你去: -

Get to UIViewController from UIView?

希望,这可以帮助你。