【问题标题】:UIViewController: detecting when view appears againUIViewController:检测视图何时再次出现
【发布时间】:2015-04-13 17:50:13
【问题描述】:

我有一个 UIViewController 类,它包含一个 WKWebView 并实现了 WKNavigationDelegate。

我想检测视图控制器何时再次出现。我了解 loadView 方法,但是,如果我在堆栈上推送一个新视图,然后从该视图返回到前一个视图(我的视图控制器),在视图控制器上调用哪个方法?

【问题讨论】:

  • 当您说“推送新视图”时,您指的是[self.view addSubview:newView]; 还是您的意思是[self.navigationController pushViewController:newViewController];?如果你推送一个新的视图控制器然后返回,第一个视图控制器的viewWillAppearviewDidAppear 将再次触发。如果您指的是在视图控制器的视图之上显示子视图,那么您可以选择使用类似协议的东西,从而定义 customViewDidPressClose: 委托方法,然后您的视图控制器可以实现该委托方法以获得通知。跨度>

标签: ios objective-c uiviewcontroller


【解决方案1】:

将被调用的方法是viewWillAppear:

【讨论】:

    【解决方案2】:

    如果您推送到下一个视图,则将首先调用 viewDidLoad

    然后viewWillAppearviewDidAppear

    如果你再次弹出到上一个屏幕(你的 UIViewController)那么

    viewWillAppear 将在整个视图出现后首先被调用

    然后 viewDidAppear 将被调用..

    viewDidAppearviewWillAppear 调用任何方法之后您可以在 ViewDidAppear 加载数据的情况下很有用..

    【讨论】:

      【解决方案3】:

      ViewControllers viewDidLoad 方法只在第一次创建视图时调用一次。

      // viewDidLoad is called only once when the view is created for the first time
       - (void) viewDidLoad
      {
           [super viewDidLoad];
           // do your code here
      }
      

      您还可以在 ViewController.m 类中实现以下两种方法

      // viewWillAppear is called just before the view is about to be appeared
      - (void) viewWillAppear
      {
           [super viewWillAppear];
           // do your code here
      }
      
      // is called when the view has appeared
      - (void) viewDidAppear
      {
           [super viewDidAppear];
           // do your code here
      }
      

      【讨论】:

        猜你喜欢
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 2019-06-09
        相关资源
        最近更新 更多