ios - UITabBar 奇怪的行为首先在模拟器中初始化
问题描述
正如标题中提到的,我第一次初始化自定义 TabBar 时遇到了问题。
TabBarController 在故事板中有五个关系,它不是初始视图控制器。
当应用程序启动时,我将 TabBarController 设置为 rootViewController,但我第一次启动应用程序时,TabBar 无法识别触摸,没有调用 didSelect;重新启动 App 和 TabBar 正常工作。我没有任何错误或警告日志。
第一次启动和第二次启动时 TabBar 的配置相同。
编辑:这只发生在模拟器中,而不是在真实设备中:我需要解决使用模拟器的 Apple Review。
SplashScreenViewController 是我的初始视图控制器,在这里我验证用户没有登录,而不是我将 LoginViewController 设置为 rootViewController:
let login = storyboard.instantiateViewController(withIdentifier: "loginStoryboardID") as! LoginViewController
UIApplication.shared.keyWindow?.rootViewController = login
UIApplication.shared.keyWindow?.makeKeyAndVisible()
用户登录后,我将 TabBarController 设置为 rootViewController:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
tabBar = storyboard.instantiateViewController(withIdentifier: "tabBarControllerStoryboardID") as? UITabBarController
tabBar?.tabBar.layer.borderWidth = 0.0
tabBar? .tabBar.layer.borderColor = UIColor.clear.cgColor
tabBar?.delegate = self
UIApplication.shared.keyWindow?.rootViewController = tabBar
UIApplication.shared.keyWindow?.makeKeyAndVisible()
解决方案
推荐阅读
- javascript - 在图像悬停时显示轮播标题
- git - 模块未安装
- python - 如何防止matplotlib在水平轴上显示十进制年份
- spring - 春季批处理作业实例
- kubernetes - Prometheus Operator `"alertmanagers.monitoring.coreos.com" 已经存在`
- r - R - 合并2个数据帧与时间戳之间
- php - 无法使用 codeigniter 获取 MSSQL 表数据
- c# - 将枚举隐藏到 core2.1 剃须刀页面中的下拉列表
- c++ - 如何使用 JNI 从 Java 方法将字符串值转换为 C++
- jquery - 如何使用 ajax 从 asp.net 中的引导模式提交数据?