iOS最佳实践:一个场景一个控制器或多个场景一个控制器?

时间:2015-08-16 01:56:57

标签: ios swift

我是iOS开发的新手,已经开始使用Swift了。我目前正在使用标签栏导航,其中包含3个标签/导航。我应该将UIViewController子类化并将其用于所有3个场景,或者每个场景都应该有自己的UIViewController子类。这方面的最佳做法是什么?

谢谢。

更新

感谢@Larcerax和@Adrian的输入,我已经更新了我的故事板:

enter image description here

每个标签导航都有自己的UINavigationController和UIViewController的子类。如果我错误地解释您的路线,请与我们联系。

2 个答案:

答案 0 :(得分:3)

如果我是你,而且我以前一直在你的鞋子里,我不会按照你的意思去做,但我会彻底改变策略,走这条路:

App Delegate:MainScreenRootViewController ===> UITabBarController:

标签1 ====> UINavigationController ====>的UIViewController

标签2 ====> UINavigationController ====>的UIViewController

Tab 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控制器对主窗口进行root操作,我唯一不同的就是将导航控制器中的tabbar生根,然后将此组合作为root用户控制器的根目录。窗口。

答案 1 :(得分:3)

您可能会在不同的UIViewController上执行不同的操作,因此您需要为每个场景设置不同的视图控制器。在使用UIViewControllers时,您会看到很多重复:使用的方法,但您可能会在不同的ViewController上的这些方法中做不同的事情。

相关问题