2012-10-16 1 views
0

내 UIWindow의 rootViewControler를 변경 한 후 다음 오류가 발생합니다.변경 후 오류 rootviewcontroller + [NSNotificationCenter dictationViewClass]

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]에 대해 아무것도 찾을 수 없습니다 또는이 될 수있는.

EDIT : 이제 나는 전환시 rootViewController를 변경하면 오류가 발생하지만 직접 실행하면 오류가 발생하지 않습니다.

+0

그래서 나는이 방법을 소스에 포함하고있는 카테고리를 찾을 것입니다. –

+0

카테고리가 있지만 이것과 같은 메소드가 없습니다. 이상하게도 모든 것이 실행되지 않습니다. – Sebastian

답변

0

실제 답변이 아니지만 애니메이션과 상관없이 다른 작업에서 동일한 오류가 다시 발생합니다. 이 문제는 rootviewcontroller의 변경으로 보입니다. 숨겨진 tabbarcontroller로 바꾸고 탭 사이를 전환하면 문제가 해결됩니다.

0

클래스로 전송 된 인식 할 수없는 선택기는이 클래스에 대해 정의 된 메소드가 없음을 의미합니다. 시도해보십시오 :

  1. 줄을 삭제하고 제대로 작동하는지보십시오. 당신의 소스 withn 범주에 대한
  2. 봐 그것은
  3. 이 방법이해야 할 무엇을 의미하는지 ouy 파악하고 그것을
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

    잘못된 방법을 호출하고 있습니다. dictationViewClass은 (는) 존재하지 않습니다. 이것은 상응하는 클래스 (NSNotificationCenter)에 존재하지 않는 메소드를 호출하려고한다는 것을 의미합니다. 당신은 내가 당신에게 도움이 될 바랍니다

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

    설정을 아래와 같이 알림을 변경해야합니다.

  • +0

    안녕하세요, 문제는 아무데도 (내 또는 프레임 워크) 코드에서 그 이름을 가진 무언가이며, 결코 실행되지 않는 분기에서 리턴을 제거 할 때만 발생하는 이유는 무엇입니까? – Sebastian

    +0

    @Sebastian 사실 NSNotification을 잘못된 방법으로 등록하면 ('dictationViewClass') NSNotificationCenter' 클래스에서 종료되지 않습니다. 그렇다면 예외가 발생하는 이유입니다. 'dictationViewClass'를'defaultCenter'로 대체하십시오. 알림을 설정하는 방법에 대한 자세한 내용 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html – Kamarshad

    +0

    문제는 내 것이 없습니다. 코드 또는 내가 사용하는 모든 프레임 워크. – Sebastian