2

好吧 - 我的大腦現在正在炒,所以任何幫助將不勝感激。瞭解UIViewController的層次結構

我在我的應用程序中有多個UIViewController的子類。讓我們打電話給他們VC_A, VC_B, VC_C, VC_D

用戶通過觸摸每個視圖上的按鈕進行交互。

所以我的AppDelegate在VC_A補充道:

//Add the view controller's view to the window and display. 
[self.window addSubview:viewController.view]; 
[self.window makeKeyAndVisible]; 

VC_A然後加載VC_B使用presentModalViewController

VC_B *tempView = [[VC_B alloc] initWithNibName:@"temploadingscreen" bundle:nil]; 
    [self presentModalViewController:tempView animated:NO]; 
    [tempView release]; 

等,直到我得到的

VC_A 
- VC_B 
    - VC_C 
     - VC_D 

層次但那時我打電話presentModalViewController在VC_D帶我到VC_C我希望它是VC_C的新實例,而不是原始實例。

所以我的問題是如何去做這個 - 我需要使用[self dismissModalViewControllerAnimated:NO];刪除視圖的舊實例。我不能使用,因爲應用程序的類型之一 -

任何幫助,因爲我已經做了搜索這一點,但所有的教程和材料使用導航欄來控制導航感激地讚賞。在UIViewControllers的新實例之間正確移動的任何工作代碼示例都會很好。

回答

0

我決定做這裏面完全適用於什麼,我需要以不同的方式一個新的實例。

我所做的是我在xib中創建了基本ViewController,並在viewDidAppear方法中基於全局NSNumber的值調用了其他viewControllers(使用presentModalViewController)。

因此,當我去任何其他viewcontrollers而不是他們調用另一個viewController他們只是設置全局變量指示加載,然後關閉當前視圖(使用dismissModalViewController)。

這樣,viewControllers的每個實例都關閉並釋放內存。

我已經創建了一個示例項目,並把它放在github上https://github.com/sregorcinimod/Open

只要看看在下載你會看到它有

3

只需創建與

ViewController_C *newVC_C = [[ViewController_C alloc] init] 
[self presentModalViewController:newVC_C animated:NO]; 
[newVC_C release]; 
+1

+1。您可以同時擁有同一個類的多個實例。以這種方式考慮一下...每個視圖控制器都是NSObject的子類,但是你一次只能有一個以上的實例化。 – thomashw

+0

我需要循環圓了很多我決定了不同的方法 - 一旦我能回答我的問題(必須等待8小時),我將把我的答案有一個鏈接到一個示例項目 – sregorcinimod