从委托方法执行相同的ViewController

时间:2017-02-27 09:45:07

标签: swift delegates

我试图从ViewController A到ViewController A(相同的VC)执行segue。当我按住Ctrl键并从按钮拖动到VC并设置标识符(" sameVC"在我的情况下)时,我可以这样做。

点击按钮时,segue按预期工作。问题是,我需要打电话

self.performSegue(withIdentifier: "sameVC", sender: self)

来自代表。因此,当点击按钮时,我需要调用一个具有委托的函数,如下所示:

class ViewControllerA: ViewController, MyDelegate {

  var mC = MyClass()

  override func viewDidLoad() {
     mC.delegate = self
  }

  @IBAction func buttonTapped(_ sender: UIButton) {
     mC.myfunc()
  }

  func success {
    // Trying to call delegate
    self.performSegue(withIdentifies: "sameVC", sender: self)
  }
}

protocol MyDelegate {
  func success()
}

class MyClass {
  var delegate: MyDelegate?

  func myfunc() {
    // ...
    self.delegate.success()
  }
}

当代表在"成功" -function中返回ViewControllerA时,我想执行segue,但View不再存在,因为segue被调用为隐含&#34 ; buttonTapped" -function。

当segue没有进入同一个VC时,我只需按住Ctrl +从ViewControllerA拖动到ViewControllerB,但这不可能只有一个ViewController(或者我不知道如何这样做。)

有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

而不是按住ctrl +拖动按钮,从ViewController本身ctrl +拖动,然后等待你调用performSegue

为了从您那里获得多个可能需要导航到的viewcontrollers,您可以在Storyboard中为viewControllers分配一个Identifier,并使用storyboard.instantiateViewControllerWithIdentifier方法实例化您想要的ViewController并将其呈现给用户,例如将它推到当前的viewcontroller之上。