从模态窗口调用父视图控制器上的方法时出错

时间:2012-03-21 17:05:26

标签: ios ios5 uinavigationcontroller modalviewcontroller parentviewcontroller

我在这里看到的是一个显示搜索结果列表的页面。当您单击搜索按钮时,它会打开一个模态窗口,您可以在其中更改搜索条件。单击完成后,它会在模态窗口上调用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];
}

我的想法是模态窗口在导航控制器内,所以我想也许我需要经历那个,然后到父控制器?

1 个答案:

答案 0 :(得分:2)

任何时候我都会看到self.parentViewController ....这是代码味道。

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

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