0

UIWindow の rootViewControler を変更すると、次のエラーが発生します。

2012-10-16 15:12:35.653 repdocApp[22898:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSNotificationCenter dictationViewClass]: unrecognized selector sent to class 0x1d63914'

奇妙なことに、現時点では決して実行されない行がコードにある場合にのみ発生します。

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{   
    AppDelegate *app = (AppDelegate *) [[UIApplication sharedApplication] delegate];
    OverviewModel *model = [self.dataArray objectAtIndex:indexPath.row];

if (model.modelType == ModelTypeCatalog)
{
     NSLog(@"HERE");
    if (app.window.rootViewController == app.catalogViewController)
    {
        return;
    }
    // with this return no error but this branch is never executed
    // return;
    [UIView transitionFromView:app.window.rootViewController.view
                        toView:app.catalogViewController.view
                      duration:0.45f
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    completion:^(BOOL finished){
                        app.window.rootViewController = app.catalogViewController;
                    }];
}
else
{
    if (app.window.rootViewController == app.catalogViewController)
    {
        [app.navigationPopoverController dismissPopoverAnimated:NO];
        [UIView transitionFromView:app.window.rootViewController.view
                            toView:app.splitViewController.view
                          duration:0.45f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        completion:^(BOOL finished){
                            app.window.rootViewController = app.splitViewController;
                        }];
    }
}

}

インターネット全体を検索しましたが、 +[NSNotificationCenter dictationViewClass] またはこれが何であるかについて何も見つかりませんでした。

編集:今気づいたのですが、トランジションで rootViewController を変更した場合にのみ発生し、直接変更してもエラーは発生しません。

4

3 に答える 3

1

エラーログis 2012-10-16 15:12:35.653 repdocApp[22898:c07] Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSNotificationCenter dictationViewClass]: unrecognized selector sent to class 0x1d63914

間違ったメソッドを呼び出しています。dictationViewClassiosには存在しません。これは単に、対応するクラス ( ) に存在しないメソッドを呼び出そうとしていることを意味しますNSNotificationCenter。以下のように設定通知を変更する必要があります

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourMethodWantToExcute:) name:@"NSNotificationName" object:nil];

お役に立てば幸いです。

于 2012-10-16T13:31:59.903 に答える
0

これは本当の答えではありませんが、アニメーションに関係なく、さまざまなアクションで同じエラーが再び発生します。問題は rootviewcontroller の変更のようです。それを非表示の tabbarcontroller に置き換えてタブを切り替えると、問題はなくなりました。

于 2012-10-19T06:40:35.417 に答える
0

クラスに認識されないセレクターが送信されたということは、このクラスにそのようなメソッドが定義されていないことを意味します。試す:

  1. 行を削除して、動作するかどうか試してください。
  2. このメソッドが含まれている場合は、ソースでカテゴリを探します
  3. 同じ名前で独自の空のメソッドを作成する
  4. このメソッドが何を意味するのかを理解し、実装してみてください
于 2012-10-16T13:25:23.007 に答える