我正在尝试用我的应用程序的init VC初始化我的核心数据堆栈。为此,我希望在加载时将创建的核心数据管理器传递到第一个VC中。
我认为这段代码将coredatamanager传递到VC中是有意义的,但是无论我以何种方式编写这段代码,我都会出错,我确定我遗漏了一些简单的东西?
// Initialize Storyboard
let storyboard = UIStoryboard(name: "RoutineController", bundle: Bundle.main)
// Instantiate Initial View Controller
if let viewController = storyboard.instantiateInitialViewController() as? ViewController {
// Configure View Controller
viewController.coreDataManager = coreDataManager
// Set Root View Controller
window?.rootViewController = viewController
}
错误很简单:
使用未声明的类型“ViewController”
但是如果我删除“as”?ViewController'我在下一行得到一个错误,ViewController没有属性coreDataManager。
是否需要在发送到的视图控制器的viewdidload中定义某种委托?
编辑修改了我的代码以更正故事板ID,但是{}中的代码似乎没有执行,我得到了由于if-let失败而导致的打印错误,所以这仍然不是设置viewController的正确方法…有什么原因吗?
// Initialize Storyboard
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
// Instantiate Initial View Controller
if let viewController = storyboard.instantiateInitialViewController() as? RoutineController {
// Configure View Controller
print("SENDING THIS INFO TO THE FIRST VC \(self.coreDataManager)")
viewController.coreDataManager = self.coreDataManager
// Set Root View Controller
window?.rootViewController = viewController
} else {
print("WE COULDNT SET VIEWCONTROLLER AS THE DESIGNATED VC SO MOC WASNT PASSED")
}
最佳答案
这是你的问题:
as? ViewController
应该是
as! UIViewController
或者,这也应该起作用:
as! RoutineController
关于ios - 在App Delegate中设置Init VC?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42457261/