0

ストーリーボードに次のコントローラーがあります。

ストーリーボード

ナビゲーションコントローラーは、左側のメインビューコントローラーのボタンで接続されています。ポップオーバーに表示されます。ユーザーが右側のテーブルビューコントローラーの上部にある[サインアウト]ボタンをクリックすると、メインビューコントローラーに戻り、サインアウトを実行するメソッドを呼び出してから、認証ビューコントローラーを表示する必要があります(ユーザーがサインインしていない場合、アプリは使用できません)。私がこれをやろうとしたすべての方法は失敗しました。

  1. アンワインドセグエでほぼ実行できますが、メインビューのアンワインドメソッドで認証ビューコントローラーを起動すると、「プレゼンテーションまたは却下の進行中にビューコントローラーを却下しようとしました」という警告が表示されます。解雇が完了するまで任意の時間を待つようにタイマーを設定することは、ハックのように思えます。(「あなたのセグエがちょうど完了した」コールバックがあったらいいのにと思います。)

  2. メインビューコントローラーをprepareForSegueメソッドの設定コントローラーのデリゲートとして設定し、ボタンがクリックされたときにデリゲートメソッドを呼び出すことによってそれを行うことはできません。これは、セグエのdestinationViewControllerがないためです。私の設定コントローラーでは、それを収容するのはナビゲーションコントローラーです。

これを行うための明白な方法がいくつかありますよね?おそらく、設定ビューコントローラのメソッドにボタンをアタッチして、それ自体を閉じてから、完了ブロックでNSNotificationを起動しますか?それはまだハッキーのようです。

4

1 に答える 1

1

次のコマンドを使用して、メインビューコントローラをprepareForSegueメソッドの設定コントローラのデリゲートにすることができます。

 SettingsViewcontroller *settings =  [(UINavigationController *)segue.destinationViewController topViewController];
settings.delegate = self;

次に、設定コントローラーのviewDidDisappearメソッドでdelegateメソッドを呼び出すことができると思います。

于 2013-03-27T04:20:58.303 に答える