• performSegueWithIdentifier 不生效的解决办法


    相信很多人都会遇到这样的需求:

    APP 打开以后,判断用户是否登录,如果未登录,就跳转到登陆页。

    今天我也遇到了这个需求,发现我封装的一个 `func checkLoginStatus()` 放在 `viewDidLoad` 里调用根本没反映,Google 了一圈,得到了解决办法:

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(true)
        checkLoginStatus()
    }

    为什么?


    iOS 视图控制对象的生命周期如下:

    init-初始化程序

    viewDidLoad-加载视图

    viewWillAppear-UIViewController对象的视图即将加入窗口时调用;

    viewDidApper-UIViewController对象的视图已经加入到窗口时调用;

    viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;

    viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;

    viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;

    viewDidUnload-当内存过低,释放一些不需要的视图时调用。


    原因很简单:如果在 viewDidLoad 时就启动 Segue 的话,依然会被后来填充的视图覆盖,要是在视图载入完成以后的 viewDidAppear 中启动 Segue,就 OK 了!

     

     
     
  • 相关阅读:
    poj3068
    tyvj1864 [Poetize I]守卫者的挑战
    BZOJ1597 [Usaco2008 Mar]土地购买
    [AtCoder Regular Contest 083] Bichrome Tree
    [LUOGU]3919 【模板】可持久化数组
    [LUOGU]P3701 主席树(假的)
    2018.7.20模拟赛
    [CodeForces]1006F Xor Path
    2018.7.19模拟赛
    [LUOGU]P1373 小a和uim之大逃离
  • 原文地址:https://www.cnblogs.com/Cheetah-yang/p/4669905.html
Copyright © 2020-2023  润新知