【问题标题】:Run method when viewcontroller is accessed from another vc being dismissed从另一个被关闭的 vc 访问 viewcontroller 时的运行方法
【发布时间】:2018-07-11 05:15:30
【问题描述】:

假设我的初始 vc 名为 VC1,然后我有第二个名为 VC2。 VC1 对 VC2 有一个 segue,在 VC2 上有一个按钮可以关闭 VC2 然后显示 VC1。加载 VC1 后,我想运行一个方法,但我不能这样做,因为确实加载了,所以我在哪里可以这样做?

[VC1] -> [VC2]

【问题讨论】:

  • 使用委托方法。如果您对此不了解,请参考:medium.com/@jamesrochabrun/…
  • 在 viewWillAppear 中调用该方法,而不是在 viewDidLoad 中调用
  • 除了@chandra1234你还可以使用unwindToSegue

标签: swift segue viewcontroller viewdidload


【解决方案1】:

您也可以尝试Unwind Segue 来关闭 VC2 并调用 VC1 中的方法。它非常简单,并且需要更少的编码。

在您的 VC1 中添加以下方法:

@IBAction func unwindToVC1(segue:UIStoryboardSegue){
    print("Hello")
}

storyboard 中右键单击VC1 的Exit icon 并将segue 连接到VC2:

然后在 VC2 的 storyboard 中选择 unwindSegue 并命名:

现在在您解除 VC2 的方法中,只需添加:

performSegue(withIdentifier: "dismissSegue", sender: self)

您还可以将数据从 VC2 传递到 VC1。

【讨论】:

    【解决方案2】:

    您可以使用委托方法来实现此目的。在您调用以关闭 VC2 的方法中调用委托。您可以在 VC1 中实现此委托。

    【讨论】:

      【解决方案3】:

      在 VC1 中: VC2 的委托和在类或扩展中的 VC1 控制器

      将委托方法添加到 VC1 中,该方法将在关闭 VC2 后调用

      在 VC2 中: 添加VC1的协议并使Protocol的对象委托然后其segue退出它转到VC1的Delegate方法。

      例子:

      VC1:

      extension VC1, myCustomVC2Delegate {
          func didCloseDelegate() {
              // Your function or method Called here
          }
      }
      

      VC2:

      protocol myCustomVC2Delegate {
          func didCloseDelegate()
      }
      import UIKit
      
      class VC2: UIViewController {
      
          var delegate: myCustomVC2Delegate?
      
          @IBAction func onTapGotoVC1(_ sender: AnyObject) {
              self.performSegue(withIdentifier: "gotoVC1", sender: self)
          }
      
      
          override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      
              if segue.identifier == "gotoVC1" {
                 if self.delegate != nil {
                  self.delegate?.didCloseDelegate()
              }
           } 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-27
        相关资源
        最近更新 更多