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 .... 这是一种代码味道。

不要像这样链接视图控制器,而是将一个视图控制器设置为弹出控制器上的委托方法。然后弹出窗口可以调用它的委托来告诉它更新搜索。

这是一种更好、更易于维护的方法,您应该养成这样做的习惯。

于 2012-03-21T17:18:09.690 回答