2012. 11. 12. 13:49ㆍ제2외국어/에러일지.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<TestViewController: 0x1e5f1360>) has no segue with identifier
Oh My God!!
Why this problem happened?
: 일반적으로 Segue 의 매칭이 안 된 경우 발생. ( 스토리보드에서 설정한 것과 코드로 가는 게 다를 경우 )
1. Segue 이름 확인
2. info.plist 에서 스토리보드 파일 이름 매칭 확인
3. 이전 데이터가 남아있을 경우 발생할 수도 있으니, 이전 컴파일 (시뮬레이터 or 디바이스 ) 앱을 삭제후 다시 확인
등등 해결책으로 올라온 답변.
화면전환과 관련하여 (performSegueWithIdentifier ) 함수를 사용하는 경우
1. ViewDidLoad 에서 사용할 경우. ( X )
: [Warning]whose view is not in the window hierarchy! 뷰가 만들어 지기 전에 이동할려고 하면 안된다.
-> 그 후 화면전환시 Error ( has no segue with identifier ... )
2. ViewDidAppear 에서 사용할 경우. ( X -> O )
: 바로 Error ( has no segue with identifier ... )
-- > 안 되는 줄 알았는데, 생각해보니 언젠가 사용한 경험이 있었음. 그래서 어느 부분에서 문제인지 파악!!
바로 Test 결과
: 그냥 Single View Application 으로 프로젝트 만들고 바로 Test 를 하면 (ViewController 에서)ViewDidAppear 에 사용하게 되면
Error 발생.
Why? 왜 기본으로 만들어진 ViewController 에서는 되지 않을까??
아주 간단하게, 새롭게 ViewController을 만들어보면 차이를 알 수 있습니다.
바로 밑의 함수의 부제!! 기본 ViewController 에서는 밑의 함수가 존재하지 않습니다.
그래서 자신이 누군지 모르기때문에, Segue를 못 찾기 떄문에 에러가 발생하는 것 같습니다.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } |
< 해결책 >
1. 처음 만들어진 ViewController 을 시작 뷰 컨트롤( = Is Initial View Controller )로 사용하지만 않으면 됩니다.
2. 기본 ViewController 에 위 함수를 추가해주면 됩니다.
3. 그 외 부분에서 사용할 경우. ( O )
: 사용 가능.
'제2외국어 > 에러일지.' 카테고리의 다른 글
[Error]500 OOPS: cannot change directory:/home/*** 문제시. (0) | 2013.05.09 |
---|---|
[error] error: failed to attach to process ID ~~ (3) | 2013.01.04 |
AVCaptureVideoDataOutputSampleBufferDelegate 사용 시에.. (0) | 2012.11.06 |
스토리보드에서 TableView에서 Static Cells를 사용할 때 (0) | 2012.09.12 |
[error]Received fatal alert: certificate_unknown & toDerInputStream rejects tag type 66 (0) | 2012.06.28 |