предупреждение: «UIViewController» может не отвечать на «xxx» - PullRequest
0 голосов
/ 07 мая 2011

Я все еще относительно новичок в разработке для 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 Ответ

2 голосов
/ 07 мая 2011

Если я правильно понимаю ваш вопрос, это должно сработать:

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