Iphone 警告:';UIViewController';可能不响应';xxx和x27;
我对iPhone开发还比较陌生,但我知道这个警告通常是由于没有在我的类头文件中声明一个方法。这有点不同——至少我认为是这样 我在我的应用程序根视图控制器中创建了一个自定义选项卡栏,它在委托方法内动态加载到其他视图控制器中-基本上如下所示:Iphone 警告:';UIViewController';可能不响应';xxx和x27;,iphone,methods,declaration,uitabbar,Iphone,Methods,Declaration,Uitabbar,我对iPhone开发还比较陌生,但我知道这个警告通常是由于没有在我的类头文件中声明一个方法。这有点不同——至少我认为是这样 我在我的应用程序根视图控制器中创建了一个自定义选项卡栏,它在委托方法内动态加载到其他视图控制器中-基本上如下所示: - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { UIViewController *viewController = [viewControllers ob
- (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;
}
该代码工作正常,并加载到所需的视图中。当视图更改时,将运行一个检查,以查看设置视图是否即将卸载,如果是,它将调用save settings方法,如下所示:
- (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中声明它,我会得到“没有匹配的方法声明”警告。我认为重新定义我的函数可以修复警告,但肯定不是修复警告的“正确”方法。如果我正确理解您的问题,这应该可以:
if (self.currentController == 1) {
[(SettingsViewController *)self.selectedViewController saveSettings];
}
我确信我已经试过了,但我一定是打错了,因为这样做效果很好。非常感谢。