Я все еще относительно новичок в разработке для 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, я получаю предупреждение «нет подходящего объявления метода». Я предполагаю, что повторное указание моей функции исправит предупреждение, но, конечно, это не «правильный» способ исправить это.