2012-01-19 96 views
-1

爲了在iOS應用程序中切換視圖,我一直使用模態視圖控制器。它工作正常,但這是不好的編碼習慣?它會對我的應用程序的內存使用有害嗎?高效切換視圖控制器

作爲對要求更多信息的評論的迴應,我在兩者之間切換的視圖都是正常的信息視圖。我使用的三個視圖通過我的應用程序導航:

  • 主要景觀:有按鈕導航到特定信息的觀點
  • 資料查看:有按鈕導航到特定網頁的信息
  • Web視圖:通過UIWebview顯示信息

我有一個即興導航欄在頂部導航「後退」和「主頁」做主頁面。

總的來說,這是一個在其他視圖中提供菜單結構的Web應用程序。我不想透露具體是什麼(這是我的想法),但是這應該是足夠的信息來處理。

我目前的觀點之間的切換是這樣的:

newViewController *newView = [[newViewController alloc] init]; 
[self presentModalViewController:newView animated:YES]; 

基於答案爲止,模態視圖是爲了快速和暫時顯示的動畫,但我正在尋找一個更永久的方法。

有沒有更好的方法?請提供您的回覆的示例代碼。謝謝!

編輯:我很抱歉,原本沒有足夠的信息。我發佈了更多信息。如果你需要其他東西,請評論。

+0

這完全取決於您的應用程序的整體結構。沒有更多的細節,這個問題是不能合理回答的。 – PengOne 2012-01-19 00:30:24

+0

我對最初沒有足夠的信息表示歉意。我發佈了更多信息。如果你需要其他東西,請評論。 – DGund 2012-01-19 02:03:49

回答

2

使用模態視圖控制器通常會預留給需要暫時顯示視圖的時間,就像Apple消息應用程序顯示「新消息」控制器一樣。另一種方式做你想做的,這需要多一點的設置,是:

[self.navigationController pushViewController:newView animated:YES]; 

一個很好的說明,概述了兩者之間的差異可以在堆棧溢出herehere找到here以及問題。關於如何設置UINavigationController的一個很好的小教程可以找到here,以前的SO問題here涵蓋了定製動畫的主題,而一些源代碼here也可能幫助你。唷。這是很多鏈接。

+0

謝謝。你需要更多的設置是什麼意思?另外,如何選擇不同於使用此方法的默認動畫? – DGund 2012-01-19 02:05:46

+1

那麼通過需要更多的設置,我的意思是,你必須確保你必須創建一個UINavigationController並使用它來從堆棧中推送和彈出視圖控制器。這真的不是太難。我正在修改我的答案。 – 2012-01-19 02:23:01

0

模態視圖控制器具有在程序流程中獲取「額外信息」的明確目的。它們不是設計成消耗更多/更少的內存。事實上,沒有特別的視圖控制器的風格是在設計內存消耗的時候考慮的。如果您正在收集分層位信息,UINavigationController加上UITableViewController可能是要走的路。同樣,如果你需要一段信息(比如,如果沒有得到這些信息就不能繼續),你需要提供一個模式化的視圖控制器(類型)來提醒用戶。