2014-07-22 9 views
0

segue 호출 준비시 오류 메시지없이 충돌이 계속 발생합니다. 그래서 NSLog를 사용하여 무슨 일이 일어나고 있는지 추적합니다. 다음 줄은 여기 isKindOfClass 비교시 segue crashing 준비

NSLog(@"The VCs matched!!: ") 

에 도달하지 내가 추천 할 수있는 모든 스토리 보드 편집기에서 뷰 컨트롤러의 클래스를 지정하는 것이있는 정보를 제공하는 방법

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"enter prepare for segue."); 
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 

    if ([segue.identifier isEqualToString:SegueIdentifierA]) { 
     NSLog(@"Destination to match are: %@, %@ .",segue.destinationViewController,[PaperDetailViewController class]); 
     if ([segue.destinationViewController isKindOfClass:[PaperDetailViewController class]]) { 
      NSLog(@"The VCs matched!!: "); 
      PaperDetailViewController *paperDetailView = (PaperDetailViewController *)segue.destinationViewController; 

     }else NSLog(@"NO ONO NO match for %@ AND %@.",segue.destinationViewController,[PaperDetailViewController class]); 
    } 
    NSLog(@"exit prepare for segue."); 

} 
+5

디버거에 표시되는 스택 추적을 추가 할 수 있습니까? –

+1

첫 번째 NSLog ("일치하는 대상"@)에 도달 했습니까? 중단 점을 설정하고 디버거에서 단계별로 실행하면 충돌하는 정확한 행을 식별하여 도움이됩니다. – WillyCornbread

+0

도달하지 못한 첫 번째 로깅 라인은 지정한 것입니다. 다른 모든 로깅 라인은 지정한 것입니다. – learner

답변

1

는 의견이 제안하는대로 스택 추적을 볼 좋은 것입니다. 그것은 가치있는 단서를 제공 할 것입니다. 그들없이, 가장 가능성있는 원인은 다음과 같습니다 맹목적으로 보낸 사람이있는 UITableViewCell이라고 가정하는

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 

. 그렇지 않은 경우 충돌이 발생합니다 (스택 추적에서 확인할 수 있음). 테이블 선택이 segue를 유발하는 것일 경우, 이것은 안전하고 읽기 쉽습니다. ...

0

잘못된 경보에 대해 죄송합니다. 내 Xcode에 문제가있는 것 같습니다. Xcode 그냥 추락하고 그것을 다시 시작한 후 모든 예상대로 작동합니다. 도움을 주신 모든 분들께 감사 드리며 +1합니다.

+1

"크래시"에 대한 도움을 요청할 때는 항상 전체 예외 메시지와 스택 추적을 제공해야합니다. 어떤 이유로 든 가능하지 않은 경우가 있지만 질문을 게시하기 전에 해당 정보를 얻으려고 합당한 노력을 기울여야합니다. (이것은 Objective-C뿐 아니라 어떤 언어에도 해당됩니다.) –

+0

내 경우에는 실제로 아무런 흔적도 없었습니다. 아무것도. – learner

+0

Xcode가 실제로 충돌하는 경우 가능하지만 그보다도 드뭅니다. (불행하게도, 스택 추적은 많은 경우 추출하기가 어렵지만 방법을 배우는 것은 가치가 있습니다. 이전에 게시 한 링크를 참조하십시오.) –