2012-02-16 45 views
0

我創建了一個iPad應用程序,我有三個自定義的UIViewController。 VC1,VC2,VC3。 它就像一個層次結構,所以你必須逐步遍歷每個階段。關閉UIViewController或只是初始化最頂層?

因此,您不能直接從VC1跳轉到VC3。

但是,如果您在VC3中,則可以直接返回到VC2或VC1。 在VC3上,我可以撥打dismissViewControllerAnimated來呈現VC2 - 酷。

但是,如果我想從VC3跳回到VC1,最好的方法是什麼? 是不是有一個原因,只是使用「alloc和init」到VC1然後presentViewController:animated:completion會不好?

回答

1

是的,這將是不好的,因爲VC1已經存在,你會有一個副本。 你可以用它從VC3轉到VC1。

[self.presentingViewController.presentedViewController dismissModalViewControllerAnimated:YES]; 
+0

Thx爲你的幫助。不幸的是,這並沒有幫助。如果我登錄「self.presentedViewController」或「self.parentViewController」屬性,我會得到空。爲什麼? – geforce 2012-02-16 14:25:58

+0

從VC3退出到VC1現在可以工作。但不像你說的「[self.presentedViewController.presentedViewController dismissModalViewControllerAnimated:YES];」。它適用於我使用時:「[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];」...謝謝!我的問題剛剛存在。我應該爲此做一個新的線程嗎? – geforce 2012-02-17 09:50:04

+0

嗨,不,我的代碼錯了,對不起,我會編輯它:)不必擔心做一個新的線程,這是沒有必要的。如果此代碼有效,您是否可以將此答案標記爲已接受,以便訪問此主題的人員找到正確的代碼? – 2012-02-22 15:52:30

0

是的,這將是非常糟糕的分配init另一個VC1。

只需製作VC3的VC1代表即可。

當您想放棄從VC3 VC1和VC2只需調用像「DismissAllVC」 在VC1到DismissAllVC方法的委託方法只是調用

- (void)dismissModalViewControllerAnimated:(BOOL)animated 

這將解僱VC2和VC3因爲他們是孩子的VC1。

這就是我會做的事情導致父視圖控制器應該始終負責孩子的解僱。

希望對你有所幫助;)