2015-08-16 83 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的这些方法内做不同的事情。

相关问题