2011-08-30 72 views
1

從標準的基於視圖的應用程序,我發現生成的代碼這樣做:直接分配新的UIViewController或UIView?

self.window.rootViewController = self.viewController; 

所以我把它作爲使得AppDelegate中(個體經營)有一個名爲的viewController的局部變量(聲明的屬性),其中是UIViewController的子類,self.window.rootViewController指向這個視圖控制器。

當在屏幕上點擊一個按鈕時,我想跳到一個新的視圖。

現在我已經創建了UIViewController的新子類,稱爲abcViewController,以及一個代表視圖的xib文件。我應該:

(1)替代「的viewController」與「abcViewController」,使之成爲新的應用程序委託的窗口的新RootViewController的

[self.view removeFromSuperview]; 
[self.parentViewController.view addSubview:abcViewController]; 

難道我添加/直接刪除的看法,或者我應該交換視圖控制器,然後做一些改變該視圖控制器內的視圖?我是否還需要爲我想添加到應用程序的每個視圖創建UIViewController的新子類?

回答

1

這樣做。

在哪個事件要切換視圖,在那裏使用的viewController類,

- 製作的appDelegate類的對象, 對這個對象的訪問 - 然後窗口。 - 爲新視圖創建對象 - 並將其添加到窗口上。

看到這一點,

YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 

abcViewController *objAbc=[[[abcViewController alloc] initWithNibName:@"abcViewController" bundle:nil] autorelease]; 

    [obj.window addSubview:objAbc.view]; 
+0

但我需要導入我的AppDelegate.h文件的所有情況下,我需要訪問該窗口添加子視圖。這是理想嗎?另一方面,我注意到這只是在窗口中添加一個子視圖。這對任何視圖控制器都沒有影響,我應該怎麼做? – Gapton

+0

如果要製作視圖堆棧,請使用導航控制器。是的,你需要導入AppDelegate.h file.also這個理想,這是一種方法來做到這一點。 – Ishu

3

這取決於你希望如何在視覺上工作。你希望用戶能夠從這個新視圖回到原始視圖嗎?那麼你應該使用UINavigationController作爲窗口的根視圖控制器。除了回到原始視圖的能力之外,默認情況下,您還可以獲得不錯的動畫效果 - 與簡單的交換效果相比,使其更適合您的用戶。

幾乎您在應用中看到的每個控件都是UIView的子類 - 您無需爲其全部創建視圖控制器。你通常需要一個視圖控制器用於每個新「屏幕」的基本視圖。通常是的,您可以爲這些視圖的每一個分類UIViewControllerUITableViewController

+0

用戶,在大多數情況下,並不需要返回到上一畫面。在這種情況下,更換視圖控制器並銷燬舊視圖會更好嗎?在極少數需要舊觀點的情況下,我們總是可以重新創建它。 – Gapton