2012-02-20 3 views
2

사용자 정의 Segue 애니메이션 용으로 작성된 사용자 정의 클래스가 있습니다. 탭 동작에 애니메이션을 적용하려고합니다. 내 스토리 보드에는 기본보기 인 탐색 컨트롤러와 다른 두 가지보기가 있습니다. 필자는 다른 뷰에 제스처를 연결하고 segue에 사용할 사용자 정의 클래스를 정의했지만 아래 오류가 발생합니다. 나는 push를 사용하는 다른 segue가 잘 작동한다. 무엇이 잘못하고 있는지에 대한 아이디어가 있습니까?사용자 정의 Segue 애니메이션 작동하지 않습니다.

- (void) perform { 

    UIViewController *src = (UIViewController *) self.sourceViewController; 
    UIViewController *dst = (UIViewController *) self.destinationViewController; 

    [UIView transitionWithView:src.navigationController.view duration:0.8 
         options:UIViewAnimationOptionTransitionFlipFromBottom 
        animations:^{ 
         [src.navigationController pushViewController:dst animated:NO]; 
        } 
        completion:NULL]; 

} 

오류 :

2012-02-20 16:04:45.889 IdeaStarters[2755:fe03] -[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010 
2012-02-20 16:04:45.891 IdeaStarters[2755:fe03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010' 
*** First throw call stack: 
(0x13ba052 0x154bd0a 0x13bbced 0x1320f00 0x1320ce2 0x4fc3e 0x922f40 0x922eeb 0x50268 0x93dd60 0x3f8c54 0x3f8c8f 0x13bbe1a 0x1325821 0x22f46e 0xd6e2c 0xd73a9 0xd75cb 0xd7941 0xe947d 0xe966f 0xe993b 0xea3df 0xea561 0x2064ca 0x50301 0x13bbe72 0x1d6492d 0x1d6e827 0x1cf4fa7 0x1cf6ea6 0x1cf6580 0x138e9ce 0x1325670 0x12f14f6 0x12f0db4 0x12f0ccb 0x12a3879 0x12a393e 0x11a9b 0x2abd 0x2a25 0x1) 
terminate called throwing an exception(lldb) 
+0

내 코드처럼 : 완전한 .H와하는 .m 파일을 게시하시기 바랍니다 보인다. 이것은 나를 위해 잘 작동합니다. 우리는 당신이 무엇을하고 있는지를 알아야합니다. 오류 메시지의 setView는 View Controller의 다른 것과 관련이 있습니까? –

+0

나는 당신이 스토리 보드 밀고 자의 seque의 클래스와 스타일을 정의했다고 가정하고있다. 그 후 나는 아마 당신이 그것을 칠 수 있는지 확인하기 위해 식별자로 segue를 수행하는 다른 뷰로 곧바로 전환 할 수 있는지를 점검 할 것입니다. – DJPlayer

+0

viewcontroller가 손상되었거나 무언가 였고, 전체보기를 다시 만들었습니다. 이제는 모든 것이 잘 작동합니다. 나는 이것이 무엇을 일으키는 지 전혀 몰랐다. 그러나 모든 것은 나의 다른 seques와 정확하게 설정되었고, 일한다. – atrljoe

답변

1

당신은 항상 설정이 상징적 중단하는 것이 도움이 될 수있는

이 내 클래스입니다. 브레이크 포인트가 자동으로 디버거를 중지하고 당신에게 문제가 시작 위치를 확인하기 위해 호출 스택까지 돌아갈 수있는 기회를 줄 것이다

https://github.com/brennanMKE/Interfaces/blob/master/NSAssertBreakpoint.png

.

나는 NSAssert를 사용하여 무엇인가를 호출하기 전에 상태를 자주 확인합니다.

NSAssert([segue.destinationViewController isKindOfClass:[ABExpectedClass class]], @"Destination VC must be ABExpectedClass"); 

나는이 같은 문제가 기억합니다하지만 전화하려고했다 선택기 내 코드 내에서 아니었고 일반적으로 문제가되지해야 전무 값에 뭔가를 호출. 나는 단지 잘못된 것을하고 있었고 내가 사용한 논리는 논리를 바로 잡는 데 도움이되었습니다.

GitHub에서 다른 사용자 정의 부분을 확인해보십시오. 당신이 참조로 사용할 수있는 많은 것들이 있습니다.

https://github.com/search?q=UIStoryboardSegue&ref=commandbar

관련 문제