iOS UITabBarController 最佳实践 : one tab one controller or multiple tabs one controller?

标签 ios swift

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

谢谢。

更新

感谢@Larcerax 和@Adrian 的意见,我已经更新了 Storyboard:

enter image description here

每个选项卡导航都有自己的 UINavigationController 和 UIViewController 的子类。如果我对您的指示的理解有误,请告诉我。

最佳答案

如果我是你,并且我以前有过你的经历,我不会照你说的去做,但我会彻底修改策略并走这条路:

应用委托(delegate):MainScreenRootViewController ===> UITabBarController:

选项卡 1 ====> UINavigationController ====> UIViewController

选项卡 2 ====> UINavigationController ====> UIViewController

选项卡 3 ====> UINavigationController ====> UIViewController

这样做会给你更多的回旋余地,因为现在每个 tabbaritem 都有自己的导航框架,整个应用程序也有自己的导航框架,这将使你更灵活地处理其他 View , 和 window 。如果您还有其他问题,请随时开火,我会尽可能多地回答问题。

事实上,这是我为您找到的一些代码:

  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
    }

这就是如何使用导航 Controller 对选项卡进行 root,然后使用 Tabbar Controller 对主窗口进行 root,唯一不同的是将 tabbar 放在导航 Controller 中,然后将此组合作为 rootViewcontroller 的 root窗口。

关于iOS UITabBarController 最佳实践 : one tab one controller or multiple tabs one controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031159/

相关文章:

ios - 在 Xamarin 中将 Tesseract 绑定(bind)为静态库

swift - 如何将 NSSet 转换为 [String] 数组?

ios - Realm - 过滤大于字符串属性的对象

ios - CoreData - 多个持久存储

ios - 不同尺寸的 iPAD 有不同的 UI

ios - clipsToBounds 似乎在 UIStackView 中没有效果

ios - 迄今为止的 Swift ISO8601 格式

ios - 不同框架之间可以使用NSNotificationCenter进行通信吗?

ios - 在 Flutter 中打开原生 UIViewController

database - 将自定义属性添加到 Firebase Auth