2013-05-10 2 views
0

Проработали отличные ответы здесь unrecognized selector sent to instance, но я до сих пор не могу отладить это.Неопознанные селекторы ios отправлены в пример

ошибки я получаю

* Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [UITabBarController disableTabBarItemWithIndexNo]: непризнанный селектор направлен например 0x1184dfa0' * Первого бросок стеки вызовов :

Установка останова вопрос, как представляется, здесь

[appdelegate tabBarController: shouldSelectViewController:]

[tbc disableTabBarItemWithIndexNo: index];

Я считаю, что код, вызывающий этот вопрос заключается в следующем:

- (BOOL)tabBarController:(CustomTabBarController *)tbc shouldSelectViewController:(UIViewController *)viewController { 
if ([viewController isMemberOfClass:[ActionViewController class]]) { 
    NSInteger index = [tbc.viewControllers indexOfObject:viewController]; 
    CGRect frame = [[[self tabBarItemViewList:tbc] objectAtIndex:index] frame]; 
    ActionViewController* content = [[ActionViewController alloc] init]; 
    UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:content]; 
    [content release]; 
    popover.delegate = self; 
    popover.popoverContentSize = CGSizeMake(popover.popoverContentSize.width, 411.0); 

    [tbc disableTabBarItemWithIndexNo:index]; 

    // Store the popover in a custom property for later use. 
    self.currentPopover = popover; 
    [self.currentPopover presentPopoverFromRect:frame inView:tbc.tabBar permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

    return NO; 
} 

Это теперь сводит меня с ума, я уверен, что есть все подключили в IB правильно, и пользовательский контроллер должен ответить на вызов метода , Любая помощь очень ценится!

+0

Опубликуйте свой интерфейс для CustomTabBarController, определили ли вы там метод и внедрили его? Опубликовать свою реализацию для disableTabBarItemWithIndexNo – Tim

+0

Почему делегат на вкладке в контроллере приложения? – trojanfoe

+0

Вы используете этот код на iPhone или iPad? – Tendulkar

ответ

1

Просто убедитесь, что вы установили класс пользовательской панели вкладок в CustomTabBarController в nib вместо UITabBarController.

А также вы можете добавить if([tbc respondsToSelector:@selector(disableTabBarItemWithIndexNo:)]) перед вызовом этого метода для предотвращения сбоя.

+0

О, ничего себе! Проверено 100 раз, что CustomTabBarController был выбран - но смотрел на mainwindow-ipad.xib, а не на mainwindow nib! Спасибо Спасибо!! – Zeb99

1

Учитывая текст ошибки:

- [UITabBarController disableTabBarItemWithIndexNo:]

Проблема, кажется, что у вас есть экземпляр UITabBarController, а не ваш CustomTabBarController подкласса.

2

Вы должны проверить внутри CustomTabBarController ли вы определили метод disableTabBarItemWithIndexNo. потому что этот тип ошибки unrecognized selector sent to instance всегда вызывал, если соответствующий класс не имеет реализации этого метода. Если вы вызываете этот метод, тогда этот метод должен быть определен там.

И для избежания такой ошибки вы должны, во-первых, проверить, что реализация конкретного метода Как показано ниже.

if([tbc respondsToSelector:@selector(disableTabBarItemWithIndexNo:)]) 
//this will return YES if that method implemented there in `CustomTabBarController` Class otherwise will return NO. { 
     [tbc disableTabBarItemWithIndexNo :NO]; 
    } 
Смежные вопросы