私はthis thread(と同様のもの)を下から上に読んでいますが、私のニーズにはまったく適合しません。Swift/popViewControllerでデリゲートを呼び出す方法
私は、UINavigationController
の中にUIPageViewController
の中にUIViewController
を持っています。 2番目のViewControllerに移動します。 3番目のViewControllerに移動し、2番目のViewControllerにポップしてデータを配信します。現在
マイコード:
protocol PassClubDelegate {
func passClub(passedClub: Club)
}
class My3rdVC: UIViewController {
var clubs: [Club] = []
var passClubDelegate: PassClubDelegate?
....
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let club = clubs[indexPath.row]
self.passClubDelegate?.passClub(club)
navigationController?.popViewControllerAnimated(true)
}
私の第二VC:
class My2ndVC: UIViewController, PassClubDelegate {
var club = Club()
func passClub(passedClub: Club) {
SpeedLog.print("passClub called \(passedClub)")
club = passedClub
}
passClub
は呼び出されません。私はMy2ndVCにデリゲートを設定していないためだと確信していますが、どうしたらいいですか?私が使用したいと思っていたすべての解決策は、segueまたはb)My2ndVCを新規にインスタンス化します。それはまだメモリに残っていて意味がないので、階層に戻って戻ってきます。私は何が欠けていますか?私の可能性は何ですか?ヘルプは非常に感謝しています。
PS:私はセグを使用していません。あなたがMy2ndVC
のprepareForSegue
方法でMy3rdVC
のデリゲートを設定することができ
let vc = stb.instantiateViewControllerWithIdentifier("My3rdVC") as! My3rdVC
self.navigationController?.pushViewController(vc, animated: true)
私はどんなseguesを使用していませんよ。 –
しかしもちろん、あなたの努力のためにupvote。ありがとうございます –
'My3rdVC'をインスタンス化した後で、ナビゲーションコントローラのスタック – Callam