ios - 我无法转换 initialViewController
问题描述
我想在应用程序启动后实例化一个 ViewController 。所以我实例化了控制器,但我得到了一个奇怪的错误
无法将“erkeb.HomeVC”(0x100bd8738)类型的值转换为“erkeb.ContainerVC”(0x100bd8990)
有人可以告诉我如何解决这个问题吗?
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
fileprivate var containerVC = ContainerVC()
var MenuContainerVC: ContainerVC{
return containerVC
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
containerVC = ContainerVC()
window = UIWindow(frame: UIScreen.main.bounds)
let sb = UIStoryboard(name: "Main", bundle: nil)
var intialViewController = sb.instantiateViewController(withIdentifier: "WelkomVC")
let userDefaults = UserDefaults.standard
if userDefaults.bool(forKey: "WelkomIntroIsOk"){
intialViewController = sb.instantiateInitialViewController() as! ContainerVC
}
window?.rootViewController = intialViewController
window?.makeKeyAndVisible()
//normaal juist onder lijn 28 maar menu schuift niet open
// window?.rootViewController = containerVC
// window?.makeKeyAndVisible()
return true
}
解决方案
您不需要强制转换sb.instantiateInitialViewController()
为ContainerVC
. 如果UserDefaults
值为 true,ContainerVC
则以编程方式创建实例并在intialViewController
. ContainerVC
将被分配为根视图控制器。
if userDefaults.bool(forKey: "WelkomIntroIsOk") {
intialViewController = ContainerVC()
}
推荐阅读
- go - Jenkins 无法从 github 下载依赖项
- java - 如何让我的 Spring Boot 应用程序识别此服务?
- gitlab-ci - Gitlab CI/CD 动态切换作业到手动模式
- javascript - 如何使用 Express Validator 验证图像扩展?
- python-2.7 - 为什么我在导入模块时得到了一些 python 函数,而没有其他函数?
- javascript - 使用 JavaScript 定位没有选择器的标签元素
- javascript - 选择 js 中断选项和重复输入
- c - 算术级数系列的输出在 C 中不正确
- html - 如何让 display:grid(或 ms-grid)在 Internet Explorer 11 中工作?
- python - sqlalchemy @hybrid_property v @property,@hybrid_method v @classmethod