![](/img/trans.png)
[英]Creating iOS app with two “modes” (UIViewController and UINavigationController)
[英]Creating a UINavigationController for the first UIViewController
似乎有幾種方法可以將UINavigationController
創建為第一個控制器。 也許最簡單的方法是簡單地單擊情節提要中的“視圖控制器”並將其嵌入到導航控制器中。 但是我想知道僅在代碼中執行此操作的最佳方法。
你也可以繼承UINavigationController
,導入第一個視圖控制器,並在viewDidLoad
alloc
和init
一個實例,然后將其添加為childViewController
。 在情節提要中,將默認視圖控制器替換為導航控制器,然后將類設置為導航控制器。 請注意,在以前的iOS版本中,不建議將UINavigationController
子類化。
或者你可以創建另一個UIViewController
, alloc init
的第一個視圖控制器,然后alloc init
一個UINavigationController
與視圖控制器為根,添加導航控制器,因為這視圖控制器的子視圖控制器,並添加導航控制器的視圖作為一個子視圖該視圖控制器的視圖。 在情節提要中更改視圖控制器的類。 但是,這是一個尷尬的設置,因為您創建了一個視圖控制器,其目的是添加導航控制器,但它本身不是導航控制器。
我已經閱讀了另一種方法,其中涉及在AppDelegate
創建UINavigationController
。 也許還有更多的解決方案。
在針對iOS 8+的最新開發環境中工作的最合適方法是什么?
如果您從情節提要中的控制器開始,則只需在應用程序委托中添加兩行即可將該控制器嵌入導航控制器中。 如果您想用代碼來做,我認為這是最簡單的方法,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.window.rootViewController];
self.window.rootViewController = nav;
return YES;
}
如果要完全用代碼來完成,而沒有情節提要,則需要創建窗口,導航控制器及其根視圖控制器。 您還需要單擊文件列表中的項目圖標,然后在“常規”選項卡中,從“主界面”下拉菜單中刪除“主”一詞(該條目告訴系統從名為“主”的情節提要開始。 .storyboard”)。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController *vc = [ViewController new]; // You need to create this controller's view in its loadView method
vc.title = @"Root View Controller";
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
[self.window setRootViewController:nav];
[self.window makeKeyAndVisible];
return YES;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.