2012-03-18 4 views
0

私は単純なものを見落としていると思っています。しかしここではシナリオです。別のビューからモーダルを閉じる(デリゲート経由で)

私はモーダルビューLoginScreenを開くルートvcを持っています。そのビュークラスでは、プロトコル(ViewControllerDelegate)を合成し、ユーザーがモーダル経由でログインすると、親VCがモーダルを閉じ、すべてがうまくいきます。完璧に動作

[self.delegate loginConfirmed:self]; 

:LoginScreen.mで

は、私が使用しているすべては、このコードでモーダルを閉じます。しかし、私はログインが確認されてプッシュされる別のビューを持っています。まだモーダルです。それをLoginScreen2と呼んでください。

私は、ModalをLoginScreen2から近づけて、ルートVCに戻す方法を理解できません。私はこのようなさまざまなバリエーションを試しましたが、運はありません。

[((LoginScreen *)self.parentViewController).delegate loginConfirmed:((LoginScreen *)self)]; 

私は何時間も探していて、運がない。もう一度私はちょうどそれを見ていない単純なものを見逃していると思っています。誰かがすばらしいと思うアイデアがあれば。

+0

LoginScreenの後に2番目のモーダルビューが表示されていますが、問題は正しく表示されませんでしたか?あなたはそれを却下することはできませんか? – LuisEspinoza

+0

ちょっと@LuisEspinoza - これをチェックしていただきありがとうございます。私は今夜​​自分のためにものを過ぎ去っていた。下のDanhのソリューションはそれを完全に説明しました。しかし、あなたが手伝ってくれることを感謝します。 –

答えて

2
第2のビューコントローラを提示している人わから

ないが、あなたを助けるかもしれない一つのことは、モーダルモードで表示ビューコントローラ自体を却下することができますことを知っている:

[self dismissModalViewControllerAnimated:YES]; 

ルートビューコントローラは、ユーザーの状態を確認することができます表示されたらpresentModalViewController:Login1となります。 Login1はユーザーのサインイン状態を変更し、自身を閉じます。ルートは別のユーザー状態(viewWillAppear:メソッドを介して再び表示されるとき)を見て、Login2にモーダルを表示します。委任は必要ありません。

+0

うわー、私はちょうど自分のためにこれを過度に複雑に過ごしたようです!説明とアイデアをありがとうございます。魅力のように動作し、はるかに複雑ではありません!ありがとう、ダン –

関連する問題