これはおそらくこれをオーバーコンプリートしていますが、モーダルの親のプロパティにアクセスする方法はありますか?iOS - モーダルの親プロパティにアクセスする
したがって、私は "presentModalViewController"を呼び出してから、モーダルから呼び出されたビューコントローラのいくつかのプロパティにアクセスできます。
おかげで、[OK]を アシュリー
これはおそらくこれをオーバーコンプリートしていますが、モーダルの親のプロパティにアクセスする方法はありますか?iOS - モーダルの親プロパティにアクセスする
したがって、私は "presentModalViewController"を呼び出してから、モーダルから呼び出されたビューコントローラのいくつかのプロパティにアクセスできます。
おかげで、[OK]を アシュリー
ので、この質問をするので、私は、彼らがうまくいくかのように見えたが、なかったいくつかのテクニックを試してみました。
このような例です。それはモーダルを提示し、正規のUIViewControllerであった
((pController *)self.parentViewController).testString;
しかし、親は実際にUITabBarControllerだった、とさえselectedViewControllerは動作しませんでした使用します。
私のソリューションは、私は、実装ファイルでそれを合成した後、私のモーダルの.hファイルにmodalViewControllerのinitのallocを/
id delegate;
と
@property (nonatomic, assign) id delegate;
を追加することでしたが、それを提示する直前に、 set
modalViewController.delegate = self;
このようにして、自分のモーダル内からself.delegateを呼び出すことができます。これは、それがあるコントローラを表示している言っていないので、これはまだ十分ではありませんでしたので、私は
self.delegate.testString;
を言うことができない。しかし、私は以前学んだ鋳造は私が
((pController *)self.delegate).testString;
の完全に動作するソリューションを取得することができ
私はこれを邪魔していないと思うし、これが将来誰かを助けることができることを願っています。
適切な方法は、プロトコルを定義し、デリゲートをID
あなたはiOSの5を使用している場合、あなたはここで親ビューコントローラ
にアクセスするためにself.presentingViewControllerを呼び出すことができますapple reference
このアプリは古いiOS版をサポートしているので、これはできません。とにかくありがとう。 –
あなたの答えはほぼ正しかったです - あなたはむしろparentViewController
よりpresentingViewController
をしたいが、これは可能性厳密な結合(2つのクラスの間の依存関係、つまり、相互にしか働かないということを意味する)につながります。
プロトコルをまだ定義するのが最善ですが、デリゲートプロパティは必要ありません。presentingViewController
プロパティと同じ値になります。
presentingViewControllerはiOS5のみです。これは古いバージョンとの互換性が必要です。 –
私の経験では、現在のところ、モーダルを持つビューのparentViewプロパティを取得/設定するために委譲パターンを使用します。 – Sakares