美文网首页
window的RootViewController的viewDi

window的RootViewController的viewDi

作者: _码奴 | 来源:发表于2022-07-05 22:42 被阅读0次

    执行两次的原因:

    出现两次执行的情况一般都是用代码创建window并设置RootViewController的情况,猜想是因为有了StoryBoard之后,系统会默认优先加载Main.storyboard文件,这时会执行一次viewDidLoad方法,之后再执行代码window加载RootViewController时再执行一次viewDidLoad方法(如果猜想有错,请各位大佬指出)

    处理方案

    如果使用StoryBoard做RootViewController,一般不会出现两次加载viewDidLoad的情况,所以说一下使用代码创建window 和 RootVC的情况,只需要关闭Xcode使用StoryBoard加载RootVC的设置就可以了。处理方案可见下面文章:
    https://blog.csdn.net/weixin_33916814/article/details/109809711
    删除AppDelegate中的下面两个方法:
    swift:

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
            // Called when a new scene session is being created.
            // Use this method to select a configuration to create the new scene with.
            return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }
    //
    //    @available(iOS 13.0, *)
    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
            // Called when the user discards a scene session.
            // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
            // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
    

    OC:

    - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options  API_AVAILABLE(ios(13.0)){
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
    }
    
    
    - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions  API_AVAILABLE(ios(13.0)){
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
    

    在删除info.plist文件中如下图中的item0这一条


    20201119135307828.jpeg

    相关文章

      网友评论

          本文标题:window的RootViewController的viewDi

          本文链接:https://www.haomeiwen.com/subject/srkebrtx.html