2010-10-13 135 views
1

我有我認爲的一個簡單問題。 我在我的應用程序View1,View2,View3中有三個視圖。 我知道如何從View1到View2,從View2到View3,但我怎麼從View3回到View1?iPhone視圖切換

我使用的View1ViewController.m下面的方法從視圖1去視圖2:

[self presentModalViewController:view2ViewController animated:YES] 

,同樣的事情去從視圖2到VIEW3。

我在View1 XIB文件中包含View2視圖控制器,並在View2 XIB文件中包含View3視圖控制器。

我發現如果我使用View3的[self dismissModalViewControllerAnimated:YES],我只能回到View2,而我需要一直回到View1。

任何幫助/方向將不勝感激。

非常感謝, -Sd

回答

2

不要想到調用-presentModalViewController:作爲從一個視圖控制器到另一個視圖控制器的方式;把它看作是一種模式地呈現視圖控制器的方式。如果你想實現導航,你應該看看UINavigationController

+0

UINavigationController是否合適?我的View2除了在打開View3之前顯示1.5秒的圖片外沒有任何其他功能。 – 2010-10-13 23:24:59

+0

我想這取決於你打開第三個視圖的意思。但是一個模態視圖控制器建議用戶交互(通常涉及捕捉用戶輸入),所以這絕對是錯誤的範例。相反,爲什麼不只是讓第一個視圖控制器添加一個子視圖或圖層來顯示動畫呢? – jlehr 2010-10-13 23:39:49

+0

我喜歡該選項的聲音 - 將子視圖添加到處理動畫的View1視圖控制器。我可以用什麼方法來處理? – 2010-10-13 23:52:08

1

從你的描述,這聽起來像你正在使用模式的觀點不正確。它們不是視圖之間轉換的一種方式,它們是簡單顯示某個對話框的方式,不久之後會被解散(如選擇某個日期或某個對象)。你確定你的觀點實際上是模態觀點,而不是完全不同的觀點嗎?

+0

在我的應用程序中,View2只是一個簡短的動畫,顯示View1和View3之間的圖片。它什麼都不做,真的。但我需要能夠從View3返回到View1。你能提出另一種方法嗎? – 2010-10-13 23:16:33

1

您可能會考慮使用導航控制器在視圖之間切換。使用pushViewController方法添加視圖。然後,您可以在UIViewController類中使用(NSArray *)popToRootViewControllerAnimated:(BOOL)動畫方法。還有popToViewController:animated:可以讓你彈出一個特定的viewController。

如果您使用模態視圖設置,則可以在view2中實現view2實現的協議。當你準備從view3彈出到view1時,你可以調用[self dismissModalViewControllerAnimated:YES];然後使用你的協議通知view2它也應該消除它的模態視圖。

希望這會有所幫助。

+0

真的很感謝評論。在我的情況下,除了在打開View3之前顯示圖片1.5秒之外,View2完全沒有任何其他功能。你能詳細說明實施協議嗎? – 2010-10-13 23:26:16

+1

如果我是你,我會使用UINavigationController。當動畫完成後,將view3推入堆棧。如果你想去協議路由,請查看這個鏈接。 https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html。向下滾動,直到看到標題Formal Protocols。這非常簡單,當你需要在視圖之間進行通信時,這種技術將非常方便。 – jmurphy 2010-10-13 23:30:49