私はViewController AからViewController A(同じVC)にsegueを実行しようとしています。 VCからボタンにドラッグ&ドロップして識別子(私の場合は "sameVC")を設定すると、私はそれを行うことができます。performSegueデリゲートメソッドから同じViewControllerへ
ボタンをタップすると、セグが期待通りに機能します。問題は、私は電話する必要があります
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が "buttonTapped"関数で暗黙的に呼び出されたため、ビューはもう存在しません。
segueが同じVCに行かないときは、ViewControllerAからViewControllerBにCtrl +ドラッグしますが、これは1つのViewControllerだけではできません(またはこれを行う方法がわかりません)。
私はこれを達成する方法はありますか?
ハッサンエスカンダリのコメント:http://stackoverflow.com/questions/42482380/performsegue-to-same-viewcontroller-from-delegate-method#comment72106011_42482455 – IceCoala