2017-03-07 19 views
0

私は、簡単なUIキットベースのゲームを使っています。いくつかのページはモーダルまたは別のページを起動します。このページが完了すると、呼び出しページに戻ります。UINavigationがプロトコルを使用して却下されたときの通知方法?

私が知りたがっていることは、どのように通知したり、見たり、それ以外の方法でリターンを聞くことができますか。

たとえば、

  1. ゲームは、モーダルダイアログと3人の選手

  2. ページがあります。このモーダル

  3. 上のアクションはダイアログが起動ページには、今のターンの次のプレイヤーに移動し、またはターンにはより多くのプレイヤーが存在しない場合は、ユーザーを却下し、いくつかの変更

  4. による返品されません。次のセグに行く。

私はプロトコルを使用してその可能性を信じていますか?

私が望むのは、UINavigationが起動ページに戻り、何らかのアクションを実行するのを聞くことです。

しかし、私はこれをSwiftでどうやって行うのですか?あなたが迅速に閉鎖を使用することができます。これを行うために

おかげ

答えて

1

。あなたは第二のコントローラを提示している場合、2番目のコントローラのプロパティとしてclosureを設定することができhttps://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html

を参照してください。これで、2番目のコントローラを閉じると、2番目のコントローラのdismissブロックでこのクロージャを呼び出すことができます。

例:ページが閉じているとき:

class FirstViewController: UIViewController 
{ 
    func presentSecondController() 
    { 
     let secondController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
     secondController.completionClosure = { 
      //Write your code here that you want to execute on FirstViewController when secondController is dismissed 
     } 
     self.present(secondController, animated: true, completion: nil) 
    } 
} 

class SecondViewController: UIViewController 
{ 
    var completionClosure : (()->())? 

    func dismissController() 
    { 
     self.dismiss(animated: true) { 
      if let closure = self.completionClosure 
      { 
       closure() 
      } 
     } 
    } 
} 
+0

が、私はのようなものが行うことができます(a)の順番に次のプレーヤーに移動します(b)はそのプレイヤーが動きを作るか、それが次のページ – zardon

+0

に行きます私は答えを編集しました。見てください。 – PGDev

+0

多くのありがとうございます。 youtubeとスタックオーバーフローに関する別の答えが見つかりました - > http://stackoverflow.com/documentation/ios/434/passing-data-between-view-controllers#t=201703071155554178066 – zardon

関連する問題