2015-08-16 79 views
1

我是iOS開發新手,已經開始使用Swift。我目前正在使用包含3個選項卡/導航的選項卡欄導航。我應該繼承UIViewController並將其用於所有3個場景,或者每個場景都應該有它自己的UIViewController的子類。這方面的最佳做法是什麼?iOS最佳實踐:一個場景一個控制器或多個場景一個控制器?

謝謝。

UPDATE

謝謝@Larcerax和@Adrian爲輸入,我已經更新了我的故事板這樣:

enter image description here

每個標籤導航都會有自己的每一個UINavigationController的和的UIViewController的子類。如果我錯誤地解讀了你的指示,請告訴我。

+0

這很好,我喜歡它,我自己不使用故事板,但這正是我剛剛提到的設置。一個強有力的原因是這樣的:如果你願意,你可以用常規的視圖來啓動你的應用程序,然後當註冊完成並且設置完成時,然後你將大的導航控制器的PIER推到堆棧上並且應用程序啓動並運行 – Loxx

+0

這會給你一個非常非常動態的應用程序的能力,你將能夠完全控制代碼庫,但它會先進。好消息也是你要這樣學習一噸。 – Loxx

+0

還有一件事你必須要解決的是:你現在在堆棧中有幾個導航控制器,你可能需要調用「setNavigationBarHidden:TRUE」,如果你發現你的導航欄在頂部行爲扭曲,除此之外,您可以從選項卡推送,您可以從選項卡中提供,並且您可以做各種其他整潔的東西。 – Loxx

回答

1

如果我是你,我之前一直在你的鞋,我不能做你在說什麼,但我會徹底改造戰略,走這條路線:

應用代表:MainScreenRootViewController = ==>的UITabBarController:

標籤1 ====>的UINavigationController ====>的UIViewController

標籤2 ====>的UINavigationController ====>的UIViewController

標籤3 === => UINavigationController ====> UIViewController

這樣做會給你更多的迴旋餘地,因爲現在每個tabbaritem都有它自己的導航框架,整個應用程序也有自己的導航框架,這將允許你更靈活地使用額外的意見和窗戶。如果您還有其他問題,請隨時解僱,我會回答儘可能多的問題。

而事實上,這裏是給你的一些代碼,我發現:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
     // Override point for customization after application launch. 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 

     var nav1 = UINavigationController() 
     var first = FirstViewController(nibName: nil, bundle: nil) 
     nav1.viewControllers = [first] 

     var second = SecondViewController(nibName: nil, bundle: nil) 
     var nav2 = UINavigationController() 
     nav2.viewControllers = [second] 

     var tabs = UITabBarController() 
     tabs.viewControllers = [nav1, nav2] 

     self.window!.rootViewController = tabs; 
     self.window?.makeKeyAndVisible(); 

     return true 
    } 

這是你如何根的標籤導航控制器,然後用的TabBar控制器,唯一根主窗口中,我會做不同的是根在導航控制器中的標籤欄,然後根據該窗口的rootViewcontroller根組合。

1

有可能到頭來你會在不同的UIViewController在做不同的事情,所以你想爲每個場景不同的視圖控制器。當您使用UIViewControllers時,您會看到很多重複:使用的方法,但您可能會在不同的ViewController s的這些方法內做不同的事情。

相關問題