
我目前正在尝试实施国家保护/恢复.
为此,我在AppDelegate.swift中实现了shouldSaveApplicationState和willFinishLaunchingWithOptions方法,并设置为返回true:
// AppDelegate.swift// STATE RESTORATION CALLBACKSfunc application(_ application: UIApplication,shouldSaveApplicationState coder: NSCoder) -> Bool { deBUG_print(this: "shouldSaveApplicationState") return true}func application(_ application: UIApplication,shouldRestoreApplicationState coder: NSCoder) -> Bool { deBUG_print(this: "shouldRestoreApplicationState") restoringState = true return true}func application(application: UIApplication,willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { deBUG_print(this: "willFinishLaunchingWithOptions") return true} 我还为所有相关的vIEwcontrollers和navigationcontrollers提供了恢复ID.
我正在使用第三方库来处理侧抽屉导航容器(https://github.com/sascha/DrawerController).初始vIEwcontroller是在dIDFinishLaunchingWithOptions方法中以编程方式设置的,见下文.
// AppDelegate.swiftvar centerContainer: DrawerController?func application(_ application: UIApplication,dIDFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil) let centerVIEwController = mainStoryboard.instantiateVIEwController(withIDentifIEr: "RootVIEwControllerNav") as! UINavigationController let leftVIEwController = mainStoryboard.instantiateVIEwController(withIDentifIEr: "SIDeDrawerVIEwController") as! UItableVIEwController centerContainer = DrawerController(centerVIEwController: centerVIEwController,leftDrawerVIEwController: leftVIEwController) centerContainer?.restorationIDentifIEr = "DrawerControllerVIEw" window = UIWindow(frame: UIScreen.main.bounds) window?.restorationIDentifIEr = "MainWindow" window?.rootVIEwController = centerContainer window?.makeKeyAndVisible() return true} 当应用程序打开并尝试恢复状态时,它会暂时显示正确的vIEwcontroller(应用程序关闭前的最后一个控制器),然后一旦应用程序变为活动状态,它将恢复为初始vIEwcontroller.
例如,发生以下情况:
>打开应用程序通过侧面菜单导航到“设置”视图
>导航到主屏幕
>停止运行xcode并再次启动它
>应用程序将打开显示设置视图,然后恢复为主视图
任何人都可以告诉我是什么导致了这个,或者我哪里出错了?如果您需要更多代码示例,请与我们联系.
解决方法func application(_ application: UIApplication,dIDFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // OverrIDe point for customization after application launch. let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil) let leftSIDeDrawerVIEwController = mainStoryboard.instantiateVIEwController(withIDentifIEr: "SIDeDrawerVIEwController") as! UItableVIEwController let centerVIEwController = mainStoryboard.instantiateVIEwController(withIDentifIEr: "RootVIEwControllerNav") as! UINavigationController let navigationController = UINavigationController(rootVIEwController: centerVIEwController) navigationController.restorationIDentifIEr = "navigationControllerKey" let leftSIDeNavController = UINavigationController(rootVIEwController: leftSIDeDrawerVIEwController) leftSIDeNavController.restorationIDentifIEr = "leftNavigationController" self.drawerController = DrawerController(centerVIEwController: navigationController,leftDrawerVIEwController: leftSIDeNavController,rightDrawerVIEwController: nil) self.drawerController.openDrawerGestureModeMask = .all self.drawerController.closeDrawerGestureModeMask = .all self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.rootVIEwController = self.drawerController return true } 总结 以上是内存溢出为你收集整理的DrawerController的iOS状态恢复问题全部内容,希望文章能够帮你解决DrawerController的iOS状态恢复问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)