【问题标题】:where does back event is handel in swift 3.0swift 3.0中的返回事件在哪里?
【发布时间】:2017-07-04 11:40:43
【问题描述】:

我想在后按时刷新整个页面控制器。 我正在使用代码导航视图控制器。

我的代码

let GTC = self.storyboard?.instantiateViewController(withIdentifier: "GoToCart")as! GoToCart
self.navigationController?.pushViewController(GTC, animated: true)

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    使用viewWillAppear 重新加载您的用户界面。当您使用navigationController?.pushViewController 时,视图将被保留并存储在堆栈中。

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // Reload the UI           
    }
    

    【讨论】:

      【解决方案2】:

      viewWillAppear(_:)

      viewWillAppear 在第一次显示视图时以及再次显示视图时调用,因此在视图控制器对象的生命周期内可以多次调用它。当由于用户点击后退按钮而导致视图即将出现时,当在标签栏控制器中选择视图控制器的标签等时调用它。确保在实现中的某个时刻调用super.viewWillAppear()。你可以用这个方法刷新你的 UI

      override func viewWillAppear(_ animated: Bool) {
          super.viewWillAppear(animated)
          // Reload the UI           
      }
      

      【讨论】:

        【解决方案3】:

        更好的方法是使用协议

        1. 从您要弹回的位置创建协议 (GoToCart)
        2. 在 GoToCart 中创建委托变量
        3. 在 MainViewController 中扩展 GoToCart 协议
        4. 引用 MainViewController 的 GoToCart 时 导航
        5. 在MainViewController中定义委托方法
        6. 然后就可以从GoToCart调用委托方法了

        例子

        在 GoToCart 中:在下面编写代码..

        protocol GoCartControllerDelegate
        {
         func childViewControllerResponse(parameter)
        }
        
        class GoToCart:UIViewController
        {
        var delegate: ChildViewControllerDelegate?
        ....
        }
        

        然后在mainViewController中实现protocol函数end扩展到protocol

        class MainViewController:UIViewController,GoCartControllerDelegate
        {
        // Define Delegate Method
        func childViewControllerResponse(parameter)
        {
        
         //...here update what you want to update according to the  situation
        
        }
        }
        

        2 重要的事情

        当像这样导航到 gocart 控制器代码时

        let GTC = self.storyboard?.instantiateViewController(withIdentifier: "GoToCart")as! GoToCart
        GTC.delegate = self
        self.navigationController?.pushViewController(GTC, animated: true)
        

        当从 gocartViewController 弹出时 像这样的代码

        self.navigationController?.popViewController(animated:true)
        self.delegate?.childViewControllerResponse(parameter)
        

        【讨论】:

          猜你喜欢
          • 2023-03-21
          • 1970-01-01
          • 2011-03-22
          • 2017-02-20
          • 2018-08-31
          • 2012-07-16
          • 1970-01-01
          • 2017-10-15
          • 1970-01-01
          相关资源
          最近更新 更多