2012-09-29 287 views
0

我有一個主視圖控制器並呈現子視圖。對於兒童內部的其中一個設置,我需要再次調用主視圖控制器。它會讓事情變得更容易。從子視圖控制器呈現主視圖控制器

以下原因層次的問題:

#define appDelegate (MyAppDelegate *)[[UIApplication sharedApplication] delegate] 

[self presentViewController:[appDelegate mainViewController] animated:YES completion:^{}]; 

有什麼辦法可以輕鬆地調用mainViewController而不失子視圖的狀態?

編輯

這裏是我如何呈現子視圖。

ChildViewController *childViewController = [[ChildViewController alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:childViewController]; 
[childViewController release]; 
[self presentModalViewController:navigationController animated:NO]; 
[navigationController release]; 
+1

難道你不能只是創建一個新的父視圖,並將其推送給孩子? – Kassem

+1

@KassemBagher是的,這是一個選項,這將是非常非常不方便的,因爲有太多的初始化需要發生 – Dex

回答

2

您不能出示已經被提出或者是一個視圖控制器在導航堆棧中。什麼是mainViewController?你有沒有實例化它?它已經添加到屏幕了嗎?

如果對兩者都是,你需要回到它(解僱它)或從它的父母先移除它,然後提出它。

+0

兩者的答案都是肯定的。我已經更新了我的問題,以顯示我是如何給孩子打電話的。什麼是解決我的問題最簡單的方法? – Dex

+0

你用mainViewController做什麼? – Vinnie

+0

好的,我最終做的是將一個屬性設置爲'(nonatomic,retain)'的子視圖的實例保存,然後將其解除以返回父視圖。 – Dex

0

在你的孩子看,你應該能夠訪問你的應用程序委託其mainViewController財產,像這樣:

MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate]; 
+0

是的,我試過這個,但是在'presentViewController'行得到一個錯誤。 – Dex

+0

什麼是錯誤? –

+0

EXC_BAD_ACCESS(code = 2,address = ....) – Dex