2016-09-25 4 views
2

私は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:私はセグを使用していません。あなたがMy2ndVCprepareForSegue方法でMy3rdVCのデリゲートを設定することができ

let vc = stb.instantiateViewControllerWithIdentifier("My3rdVC") as! My3rdVC 
self.navigationController?.pushViewController(vc, animated: true) 

答えて

3

:My3rdVCが呼び出されます。

class My2ndVC: UIViewController, PassClubDelegate { 

    ... 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     super.prepareForSegue(segue, sender: sender) 

     switch segue.destinationController { 
     case let controller as My3rdVC: 
      controller.passClubDelegate = self 
     } 
    } 
} 

これは、あなたが私はあなたが持っていると仮定しているナビゲーションコントローラのスタック上にMy2ndVCからMy3rdVCを押して、あなたのストーリーボードでセグエを作成していると仮定しています。だから、このprepareForSegueメソッドをMy2ndVCに貼り付け、それが機能するかどうかを確認してください。

UPDATE

let vc = stb.instantiateViewControllerWithIdentifier("My3rdVC") as! My3rdVC 

vc.passClubDelegate = self 

navigationController?.pushViewController(vc, animated: true) 
+0

私はどんなseguesを使用していませんよ。 –

+0

しかしもちろん、あなたの努力のためにupvote。ありがとうございます –

+0

'My3rdVC'をインスタンス化した後で、ナビゲーションコントローラのスタック – Callam

関連する問題