0

インスタンスに送信された認識されないセレクターで優れた回答を実行しましたが、まだこれをデバッグできません。

私が得るエラーは

* キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。

ブレークポイントを設定すると、問題はここから発生するようです

[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にすべてが正しく接続されていると確信しており、カスタムコントローラーはメソッド呼び出しに応答する必要があります. どんな助けでも大歓迎です!

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 ではなく in nib に設定していることを確認してくださいUITabBarController

if([tbc respondsToSelector:@selector(disableTabBarItemWithIndexNo:)]) また、クラッシュを防ぐために、このメソッドを呼び出す前に追加することもできます。

于 2013-05-10T09:26:56.580 に答える
1

エラーテキストを考えると:

-[UITabBarController disableTabBarItemWithIndexNo:]

問題は、サブクラスでUITabBarControllerはなく、のインスタンスを持っていることです。CustomTabBarController

于 2013-05-10T09:28:29.580 に答える