我试图从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(或者我不知道如何这样做。)
有什么方法可以实现这个目标吗?
答案 0 :(得分:0)
而不是按住ctrl +拖动按钮,从ViewController本身ctrl +拖动,然后等待你调用performSegue
为了从您那里获得多个可能需要导航到的viewcontrollers,您可以在Storyboard中为viewControllers分配一个Identifier,并使用storyboard.instantiateViewControllerWithIdentifier
方法实例化您想要的ViewController并将其呈现给用户,例如将它推到当前的viewcontroller之上。