调用多个类中存在的方法的最佳方法

时间:2013-02-01 16:50:28

标签: iphone ios objective-c xcode cocoa-touch

我有一个主UIViewController,其中大多数用户的互动发生。在主ViewController中有三个子视图。用户可以将单独的ViewControllers加载到UIView子视图中。

每个加载的子视图都处理数据输入。反过来,firstResponders被调用。我希望能够通过主ViewController关闭firstRespnders,也许可以使用'完成'按钮。

我原以为我可以在每个单独的子视图中添加一个名为ex;

的方法
-(void) methodToResignResponders {}

然后,在主ViewController中将此方法调用到当前对用户开放的视图中。反过来辞职在子视图中处于活动状态的响应者。

更多信息:

这就是我将每个视图设置为主ViewController的子视图的方式:

UIViewController *calcVC;



//set up the view to be added depending on the name of the view that was passed

if ([viewName isEqualToString:@"Tax"]) {

    calcVC= [[TAXViewController alloc]initWithNibName:@"TAXViewController" bundle:nil];

}else if ([viewName isEqualToString:@"Rent"]){

    calcVC= [[RENTViewController alloc]initWithNibName:@"RENTViewController" bundle:nil];

}else //continues with more views...



//Then add it to the subview

[firstView addSubview:calcVC.view];

3 个答案:

答案 0 :(得分:1)

不确定我是否掌握了这一点,主要是因为听起来你自己已经解决了这个问题。 :)

但是,从我所看到的,您所讨论的ViewController始终是名为calcVC的UIViewController实例。如果你指的是这个viewController的视图,你可以简单地调用[calcVC.view resignFirstResponder];

答案 1 :(得分:1)

您可以制作一个所有子视图控制器实现的基本协议,它可以完成您所需的一切(辞职第一响应者和其他任何东西)。

答案 2 :(得分:0)

不确定这是否回答了您的问题,但您可以遍历所有子视图并调用它,如果它存在,如下所示:

for (UIView *subview in [self.view subviews]) {
    if ([subview respondsToSelector:@selector(resignFirstResponder)]) {
        [subview resignFirstResponder];
    }
}