Reputation: 524
I am trying to passing my managedObjectContext
to the next controller.
I innate a UIWindow
instance in my appDelegate file, as I need to obtain my stand by controller.
However, Xcode said my UIWindow
instance is nil.
This id my code:
lazy var managedObjectContext: NSManagedObjectContext = persistentContainer.viewContext
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let tabController = window!.rootViewController as! UITabBarController
if let tabViewControllers = tabController.viewControllers {
let navController = tabViewControllers[0] as! UINavigationController
let controller = navController.viewControllers.first as! CurrentLocationViewController
controller.managedObjectContext = managedObjectContext
}
return true
}
It is a bit strange. How to resolve this? Thanks in advance.
Upvotes: 5
Views: 4463
Reputation: 2245
var window: UIWindow?
in your AppDelegate.swift
.SceneDelegate.swift
from your files.Application Scene Manifest
from Info.plist
.window
object in your AppDelegate.swift
as you want.Upvotes: 7
Reputation: 100503
IOS 13 window is inside SceneDelegate while prior to 13 is inside AppDelegate
Move code inside SceneDelegate
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let tabController = window!.rootViewController as! UITabBarController
if let tabViewControllers = tabController.viewControllers {
let navController = tabViewControllers[0] as! UINavigationController
let controller = navController.viewControllers.first as! CurrentLocationViewController
controller.managedObjectContext = managedObjectContext
}
}
Upvotes: 10