3

私はおそらくこれを過度に複雑にしていますが、モーダルの親のプロパティにアクセスする方法はありますか?

したがって、「presentModalViewController」を呼び出すと、モーダルから呼び出したビュー コントローラーのいくつかのプロパティにアクセスできます。

ありがとう、アシュリー

4

3 に答える 3

4

iOS 5 を使用している場合は、self.presentingViewController を呼び出して親ビュー コントローラーにアクセスできます。

ここにアップルのリファレンスがあります

于 2012-04-29T14:45:02.143 に答える
2

あなたの答えはほぼ正しかったです-あなたが望むpresentingViewControllerのではなくparentViewController、しかしこれはあなたが注意しないと緊密な結合(2つのクラス間の依存性、つまりそれらは互いにしか機能できないことを意味します)につながる可能性があります。

それでもプロトコルを定義するのが最善ですが、デリゲートプロパティは必須ではありません。プロパティと同じ値になりpresentingViewControllerます。

于 2012-04-29T14:47:00.283 に答える
1

わかりました。この質問をしてから、機能するように見えたが機能しなかったいくつかの手法を試しました。

その一例がこれです。

((pController *)self.parentViewController).testString;

ただし、モーダルを表示するのは通常の UIViewController でしたが、実際には親は UITabBarController であり、selectedViewController を使用しても機能しませんでした。

私の解決策は、モーダルの .h ファイルに追加することでした

id delegate;

@property (nonatomic, assign) id delegate;

実装ファイルで合成した後、modalViewController を割り当て/初期化しますが、提示する直前に設定します

modalViewController.delegate = self;

このようにして、モーダル内から self.delegate を呼び出すことができました。これは、どのView Controllerであるかを示していないため、まだ十分ではありません。

self.delegate.testString;

しかし、以前に学んだキャスティングにより、完全に機能するソリューションを得ることができました

((pController *)self.delegate).testString;

私はこれをただ口論しただけではないことを願っています。これが将来誰かを助けることができることを願っています.

于 2012-04-29T14:36:07.107 に答える