ios - 在 window!.rootViewController 前面添加一个 UITabBarController Swift 4 类型的 ViewController
问题描述
我继承了一个直接启动到 UITabBarController 的故事板。在 didFinishLaunchingWithOptions 方法的 AppDelegate.swift 文件中,有以下代码:
//let loginScreen = window!.rootViewController
let tabController = window!.rootViewController as! UITabBarController
let navController = tabController.viewControllers![0] as! UINavigationController
let salaryController = navController.topViewController as! SalaryTableViewController
let nav2Controller = tabController.viewControllers![1] as! UINavigationController
let employeeController = nav2Controller.topViewController as! EmployeeTableViewController
我正在尝试更改代码,以便登录屏幕是 rootViewController 但是当我从 tabController 分配中删除 rootViewController 时,我收到一个错误,将 UITableViewController 转换为 UITabBarController 总是失败。有谁知道为什么将 UITableViewController 转换为 UITabBarController 总是失败,除非 UITableViewController 是 rootViewController?有没有办法在不更改 rootViewController 分配的情况下将启动屏幕更改为不同的控制器?这是视觉的故事板: 在此处输入图像描述
解决方案
UITabBarController 是 UIViewController 的子类。您不能将超类转换为子类。(反之亦然)为了实现您的想法,您应该从情节提要中删除初始化根视图控制器并以编程方式进行。因为现在,Xcode 认为您的初始视图控制器是 UITabBarController,唯一的方法是您以编程方式实例化您的类,然后使其成为根视图控制器。
推荐阅读
- javascript - 单击仍带有 $ 符号的按钮时增加数字
- apache-spark - 通过 API 访问 Spark 结果
- android - Android:可打包异常
- php - MySQL在where子句中多次查询同一字段
- .htaccess - htaccess 将 -{dynamic_id}.html 替换为 _i{dynamic_id}
- asp.net-web-api2 - 使用 JWT Bearer 身份验证的 Web API 中的 post 请求中的 Null 有效负载
- sql-server-2008 - 从 SQL 表中的上一行获取值并在下一行的基础上计算
- ios - imagePicker 中的图像不会显示在我的 imageView 中
- sql - Oracle 透视具有相同 ID 的行
- ios - 如何将 PHAsset 存储到核心数据中