【问题标题】:How to change the rootviewcontroller to the third viewcontroller in a stack如何将 rootviewcontroller 更改为堆栈中的第三个 viewcontroller
【发布时间】:2019-04-14 06:26:52
【问题描述】:
var window: UIWindow?



    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        let tabBarController = UITabBarController()

        let settingStoryboard = UIStoryboard(name: "Setting", bundle: nil)
        let toDoListStoryboard = UIStoryboard(name: "ToDoList", bundle: nil)
        let homeStoryboard = UIStoryboard(name: "Home", bundle: nil)
        let eventListStoryboard = UIStoryboard(name: "EventList", bundle: nil)
        let activityStoryboard = UIStoryboard(name: "Activity", bundle: nil)

        let settingVC = settingStoryboard.instantiateViewController(withIdentifier: "Setting") as! SettingViewController
        let toDoListVC = toDoListStoryboard.instantiateViewController(withIdentifier: "ToDoList") as! ToDoListViewController
        let homeVC = homeStoryboard.instantiateViewController(withIdentifier: "Home") as! HomeViewController
        let eventListVC = eventListStoryboard.instantiateViewController(withIdentifier: "EventList") as! EventListViewController
        let activityVC = activityStoryboard.instantiateViewController(withIdentifier: "Activity") as! ActivityViewController

        let vcData: [(UIViewController, UIImage, UIImage)] = [

            (settingVC, UIImage(named: "SettingIcon")!, UIImage(named: "SettingSelectedIcon")!),
            (toDoListVC, UIImage(named: "ToDoIcon")!, UIImage(named: "ToDoSelectedIcon")!),
            (homeVC, UIImage(named: "HomeIcon")!, UIImage(named: "HomeSelectedIcon")!),
            (eventListVC, UIImage(named: "EventIcon")!, UIImage(named: "EventSelectedIcon")!),
            (activityVC, UIImage(named: "ActivityIcon")!, UIImage(named: "ActivitySelectedIcon")!)
        ]

        let vcs = vcData.map { (vc, image, selectedImage) -> UINavigationController in

            let nav = UINavigationController(rootViewController: vc)

            nav.tabBarItem.image = image.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
            nav.tabBarItem.selectedImage = selectedImage.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)

            nav.tabBarItem.imageInsets = UIEdgeInsets(top: 7, left: 0, bottom: -5, right: 0)

            return nav
        }

        tabBarController.viewControllers = vcs
        tabBarController.tabBar.isTranslucent = false
        tabBarController.tabBar.barTintColor = UIColor(red: 19/255, green: 41/255, blue: 77/255, alpha: 1)

        UINavigationBar.appearance().barTintColor = UIColor(red: 19/255, green: 41/255, blue: 77/255, alpha: 1)
        UINavigationBar.appearance().isTranslucent = false

        window?.rootViewController = tabBarController

        print(Realm.Configuration.defaultConfiguration.fileURL!)

        return true
    }

在上面显示的代码中,当应用程序运行时,rootviewcontroller 是添加到堆栈中的第一个视图。如何在不先初始化 homeviewcontroller 的情况下将 rootviewcontroller 更改为 HomeViewController。

【问题讨论】:

  • 这段代码运行时,根视图控制器是标签栏。您是在问如何使第三个选项卡成为最初选择的选项卡?
  • @rmaddy 是的,我希望第三个选项卡成为初始视图控制器
  • 你应该edit你的问题说清楚。下面克里斯的回答就是你所需要的。

标签: ios swift uitabbarcontroller rootviewcontroller


【解决方案1】:

只需添加

tabBarController.selectedIndex = 2

在你的行之后

tabBarController.viewControllers = vcs

【讨论】:

    【解决方案2】:

    您可以通过以下方式随时更改 RootViewController

    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    let homeViewController = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
    UIApplication.shared.delegate?.window??.rootViewController = homeViewController
    

    【讨论】:

    • 请阅读问题下方的 cmets 并阅读其他答案。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多