2011-01-27 48 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?

希望,這可以幫助你。