Swift 从委托方法执行对同一ViewController的检查

Swift 从委托方法执行对同一ViewController的检查,swift,delegates,Swift,Delegates,我正在尝试执行从ViewController a到ViewController a的转换(相同的VC)。我可以在按住ctrl键并将其从一个按钮拖动到VC并设置标识符(在我的例子中为“sameVC”)时实现这一点 点击按钮时,segue按预期工作。问题是,我需要打电话 self.performSegue(withIdentifier: "sameVC", sender: self) 来自一名代表。因此,当点击按钮时,我需要调用一个函数,该函数有一个委托,如下所示: class ViewContr

我正在尝试执行从ViewController a到ViewController a的转换(相同的VC)。我可以在按住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()
  }
}
当代理在“success”-函数中返回ViewControllerA时,我想执行segue,但视图不再出现,因为segue被称为隐式的“buttonTapped”-函数

当segue不在同一个VC中时,我只需按住ctrl键并将其从ViewControllerA拖动到ViewControllerB,但这在只有一个ViewController的情况下是不可能的(或者我不知道如何做到这一点)


有什么方法可以做到这一点吗?

与其从按钮按住ctrl键并拖动,不如从ViewController本身按住ctrl键并拖动,然后它将等待您调用
performsgue


如果您有多个要导航到的ViewController,您可以在情节提要中为ViewController分配一个标识符,并使用
情节提要。实例化ViewController WithiIdentifier
方法实例化所需的ViewController并将其呈现给用户,例如,将其推到当前视图控制器的顶部。

这仅是可能的,当我有两个视图控制器时,您不能按住ctrl键并拖动到同一个VC。使用
情节提要。InstanceEviewcontrollerWithiIdentifier
实例化视图控制器并将其推到当前视图控制器的顶部Hassan Eskandari的作品: