1

私がここで行っていることは、検索結果のリストを表示しているページです。検索ボタンをクリックすると、検索条件を変更できるモーダルウィンドウが開きます。 doneをクリックすると、モーダルウィンドウのupdateSearchメソッドが呼び出され、親ウィンドウのupdateSearchを呼び出す必要があります。私が手にエラーがここでここでモーダルウィンドウから親ViewControllerのメソッドを呼び出すときにエラーが発生しました

- (void)updateSearch 
{ 

} 

のViewController親の方法は、ここで私の1つの考えがモーダルウィンドウでモーダルウィンドウ上の私の方法

- (IBAction)updateSearch:(id)sender 
{ 
    ehrxCMView *parent = (ehrxCMView*)self.parentViewController; 
    parent.selectedOptions = self.selectedOptions; 
    [parent updateSearch]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

Receiver type 'ehrxCMView' for instance message does not declare a method with selector 'updateSearch' 

ですされていますナビゲーションコントローラの中にあるので、私はそれを通過し、次に親コントローラに行く必要があるかもしれないと思っていますか?

答えて

2

いつでも私はself.parentViewControllerを参照してください....それはコードのにおいです。

このようなビューコントローラをリンクするのではなく、1つのビューコントローラをポップアップコントローラのデリゲートメソッドとして設定します。ポップアップはそれを代理人と呼び、updateSearchにそれを伝えることができます。

これは、より良い、よりメンテナンス可能なアプローチです。

+0

良い提案。より抽象的なレベルでは、 'self.parentViewController'は明らかにJhorraが考える価値ではありません。このような問題をデバッグするときは、コンピュータが何を考えているのかを見つけて、それがあなたの考えているものとどのように違うのかを判断するのは良い考えです。 – Olie

+0

提案していただきありがとうございます、私はまだこれに新しいです。コントローラをデリゲートとして設定する方法の詳細を教えてください。私はそのコンセプトを理解していますが、私はまだそれをやっているにはまだ十分に精通していません。 – Jhorra

+0

代表者に関するセクションがあるCocoaの基礎ガイドをご覧ください。 https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18 – bandejapaisa

関連する問題