1

ここで行っているのは、検索結果のリストを表示するページです。検索ボタンをクリックすると、検索条件を変更できるモーダルウィンドウが開きます。[完了]をクリックすると、モーダルウィンドウでupdateSearchメソッドが呼び出され、次に、親ウィンドウでupdateSearchが呼び出されます。私が得るエラーは

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

親ビューコントローラのメソッドは次のとおりです

- (void)updateSearch
{

}

これがモーダルウィンドウでの私の方法です

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

ここで私が考えたのは、モーダルウィンドウがナビゲーションコントローラー内にあるということです。それで、おそらくそれを通過してから、親コントローラーに移動する必要があると思いますか?

4

1 に答える 1

2

self.parentViewController....を見るといつでもコードの臭いです。

このようにViewControllerをリンクする代わりに、1つのViewControllerをポップアップコントローラのデリゲートメソッドとして設定します。次に、ポップアップはそのデリゲートを呼び出して、updateSearchに指示することができます。

これは、実行する習慣を身に付ける必要がある、より優れた、より保守しやすいアプローチです。

于 2012-03-21T17:18:09.690 に答える