2012-02-15 47 views
0

是否有任何其他方式可以調用UIViewCOntroller,但不包括以下內容;如何調用UIViewController

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:hello animated:YES]; 

上面的代碼將設置在導航條的視圖,其中(當從視圖中導航以查看箭頭形按鈕),你會得到BackButton爲好。

我只想去一個新的UiviewController,不希望它有一個返回按鈕(基本viewController不應該被推到導航堆棧)

+0

你正在尋找一個[模態視圖(https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html)? – esqew 2012-02-15 21:15:31

+0

如果沒有指定nib名稱,您可能會遇到推送您的視圖的問題。 – 2012-02-15 21:16:46

+1

@BillBrasky什麼問題?如果您沒有指定名稱,則UIViewController的'-loadView'將查找名稱與視圖控制器名稱相匹配的nib,即此情況下的HelloUIViewController.xib。 – Caleb 2012-02-16 01:15:03

回答

2

這應該工作:

UIWindow *window = [[UIApplication applicationDelegate] window]; 
window.rootViewController = [[HelloUIViewController alloc] initWithNibName:nil bundle:nil]; 

當然,它可能並不是你想要的。它會將視圖控制器安裝爲窗口的根視圖控制器。如果您想保留導航控制器,並在導航堆棧外顯示新控制器,則需要以模態方式顯示視圖控制器。從另一個視圖控制器,您可以:

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self presentViewController:hello animated:YES completion:nil]; 
+1

它應該水平顯示,就像pushviewcontroller一樣。而不是垂直。 – sharon 2012-02-15 23:37:10

+1

你能詳細說明爲什麼你不想把它推到導航堆棧上嗎?這聽起來像你希望它*看起來像它是導航堆棧的一部分,只是不顯示導航欄或後退按鈕。正如sch所描述的,隱藏導航欄並正常推動是簡單的方法來執行您想要的操作。 – Caleb 2012-02-16 01:13:18

2

如果你不希望的導航欄,目前您的ViewController模態。

[self presentModalViewController:helloViewController animated:YES]; 
+0

請注意,iOS 5不支持此方法(請參閱https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html)。相反,使用'presentViewController:animated:completion:'。 – kevboh 2012-02-15 21:24:38

+0

你是對的。只是記下了我記憶中的一個= p – ArtSabintsev 2012-02-15 21:34:47

+0

它應該水平顯示,就像pushviewcontroller一樣。而不是垂直。 – sharon 2012-02-15 23:36:27

1

您可以隱藏導航欄:

self.navigationController.navigationBarHidden = YES; 

或者,如果你想保持導航欄,但只有擺脫了後退按鈕,你可以做這樣的事情:

self.navigationController.backItem.hidesBackButton = YES; 
相關問題