0

已经完成了此处无法识别的选择器发送到实例的出色答案,但我仍然无法调试它。

我得到的错误是

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[UITabBarController disableTabBarItemWithIndexNo:]:无法识别的选择器发送到实例0x1184dfa0'*第一次抛出调用堆栈:

设置断点问题似乎来自这里

[appdelegate tabBarController:shouldSelectViewController:]

[待定禁用TabBarItemWithIndexNo:索引];

我相信导致问题的代码是这样的:

- (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 中,并且自定义控制器应该响应方法调用。非常感谢任何帮助!

4

3 回答 3

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];
   }
于 2013-05-10T09:43:51.837 回答
1

只需检查您将自定义标签栏的类别设置为CustomTabBarControllerin nib 而不是UITabBarController.

您也可以if([tbc respondsToSelector:@selector(disableTabBarItemWithIndexNo:)]) 在调用此方法之前添加以防止崩溃。

于 2013-05-10T09:26:56.580 回答
1

鉴于错误文本:

-[UITabBarController disableTabBarItemWithIndexNo:]

问题似乎是你有一个实例UITabBarController,而不是你的CustomTabBarController子类。

于 2013-05-10T09:28:29.580 回答