swift 如何为不是InitialViewController的视图控制器实现tabBarController?

mgdq6dx1  于 2023-02-03  发布在  Swift
关注(0)|答案(1)|浏览(104)

因此,如果要将初始视图控制器设置为选项卡栏,只需创建一个选项卡栏控制器,拖动以连接到视图控制器,然后将选项卡栏控制器设置为初始视图控制器。
但是在这些标签栏之后,你现在可以通过按钮按下一个叫做主页的视图控制器,在SceneDelegate中,如果用户登录了,这个主页就被设置为rootViewController,否则它就是初始的标签栏控制器。
那么,你如何让主页有一个标签栏和另外两个视图控制器,这两个视图控制器目前正在从主页按下按钮。你可以在情节串连图板中制作一个标签栏控制器,并将其连接到3个VC的,但你不能设置标签栏控制器作为初始视图控制器

8gsdolmq

8gsdolmq1#

如果需要根据授权状态设置不同的rootViewController,只需设置rootViewController
请确保未指定启动屏幕文件,否则,代码将不起作用,默认情况下将使用您的情节提要。

情节提要中的ViewController必须具有唯一的情节提要ID,例如:

代码如下所示:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

  var window: UIWindow?

  func isAuthorized() -> Bool {
     // your implementation goes here
     return false
  }

  func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        let storyboard = UIStoryboard(name: "myStoryboardName", bundle: nil)

        if isAuthorized() {
           let vc = storyboard.instantiateViewController(withIdentifier: "myVCID")
           var tabController = UITabBarViewController()           
           tabController.setViewControllers([vc], animated: true)
           window.rootViewController = tabController
        } else {
          let vc = storyboard.instantiateViewController(withIdentifier: "mySecondVCID")
           window.rootViewController = vc
        }

        self.window = window
        window.makeKeyAndVisible()
    }
  }

在这里的代码中,您可以从.storyboard启动任何UIViewController,并将其作为选项卡添加到UITabBarViewController

相关问题