警告:'UIViewController'可能无法响应'xxx'

时间:2011-05-06 22:40:25

标签: iphone methods declaration uitabbar

我仍然相对较新的iPhone开发,但我知道这个警告通常是因为没有在我的类头文件中声明一个方法。这略有不同 - 至少我认为是这样。

我在我的应用程序根视图控制器中创建了一个自定义选项卡栏,它在委托方法中动态加载到其他视图控制器中 - 基本上是这样的:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {

    UIViewController *viewController = [viewControllers objectAtIndex:item.tag];
    [self.selectedViewController.view removeFromSuperview];
    [self.view insertSubview:viewController.view atIndex:0];
    self.selectedViewController = viewController;

}

该代码工作正常并在所需视图中加载。当视图更改时,将运行检查以查看是否即将卸载设置视图,如果是,则调用此设置方法:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {

    if (self.currentController == 1) {
        [self.selectedViewController saveSettings];
    }

    UIViewController *viewController = [viewControllers objectAtIndex:item.tag];
    [self.selectedViewController.view removeFromSuperview];
    [self.view insertSubview:viewController.view atIndex:0];
    self.selectedViewController = viewController;

}

再次代码函数很好并且调用了SettingsViewController的实例方法,但是因为方法的声明在SettingsViewController的头部而不是RootViewController因此警告。

如果我在RootViewController中声明它,我得到'无匹配的方法声明'警告。我认为重新声明我的功能会修复警告 - 但肯定不是解决这个问题的“正确”方法。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,这应该有效:

if (self.currentController == 1) {
    [(SettingsViewController *)self.selectedViewController saveSettings];
}