• 判断当前视图控制器是怎么来的


    作者:知乎用户
    链接:https://www.zhihu.com/question/26485743/answer/33062225
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    早在 iOS 5 的时候 UIViewController 就已经提供了四个方法来满足你的需求:
    /*
      These four methods can be used in a view controller's appearance callbacks to determine if it is being
      presented, dismissed, or added or removed as a child view controller. For example, a view controller can
      check if it is disappearing because it was dismissed or popped by asking itself in its viewWillDisappear:
      method by checking the expression ([self isBeingDismissed] || [self isMovingFromParentViewController]).
    */
    
    - (BOOL)isBeingPresented NS_AVAILABLE_IOS(5_0);
    - (BOOL)isBeingDismissed NS_AVAILABLE_IOS(5_0);
    
    - (BOOL)isMovingToParentViewController NS_AVAILABLE_IOS(5_0);
    - (BOOL)isMovingFromParentViewController NS_AVAILABLE_IOS(5_0);
    

    有一点需要注意的是如果你是 present 到一个 UINavigationController 的时候,你应该使用后两个方法。

    还有别的方法,比如检查 push 或 pop 可以实现 UINavigationController 的代理方法:
    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
    

    检测 present 或 dismissed 可以逐级检查 UIViewController 的 presentingViewController 属性等。

  • 相关阅读:
    centos7-根据端口号查看所属应用
    centos7-网络与防火墙常用命令
    docker(5)常用命令
    docker(4)使用Dockerfile文件创建镜像-对docker(3)的改进
    [多校联考2021] 模拟赛4
    [省选前集训2021] 模拟赛7
    [多校联考2021] 模拟赛3
    [学习笔记] 圆方树
    [多校联考2021] 模拟赛2
    [学习笔记] 反悔贪心
  • 原文地址:https://www.cnblogs.com/Hakim/p/7565069.html
Copyright © 2020-2023  润新知