2012-01-23 4 views
0

UINavigationController을 루트보기로 UITableViewController으로 모달 표시하려고했으나 버튼을 눌러 모달보기를 제공 할 때 앱이 계속 충돌했습니다. 내가 더 걸릴 그것이 보는 계기를로드 메시지 할당이 해제 된 경우 0x5677b5UITableViewController가 두 번 초기화됩니다.

로 전송 :

- (IBAction)flipToDefaultsViewController:(id)sender 
{ 

    RootTableViewController *controller = [[RootTableViewController alloc] initWithNibName:@"RootTableViewController" bundle:nil]; 

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:controller]; 
    nc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 

    [self presentModalViewController:nc animated:YES]; 
} 

메시지와 함께 응용 프로그램 충돌 :

[RootTableViewController numberOfSectionsInTableView :] 두 개의 인스턴스 인 UITableViewController이 생성되었고, 하나는 소유자가 UINavigationController이고 다른 인스턴스가 UIKit 인 것으로 나타났습니다. UIKit으로 생성 된 인스턴스는 할당이 해제되어 충돌을 일으킨 인스턴스입니다.

초기화를 initWithNibName:bundle:에서 init으로 변경했을 때 UITableViewController이 잘로드되었습니다 (내 .xib 파일이 클래스와 동일한 이름 임).

제 질문은 왜 이런 일입니까?

UITableViewController을 UINavigationController에 추가 할 때 초기화하지 않을까요? 지금까지 아무런 기쁨도없이 설명서를 둘러 보았습니다.

ARC와 함께 iOS 5를 사용하지만 대상 배포는 4.0입니다.

답변

1

개체가 두 번 초기화 된 이유는 무엇인지 알지 못했지만 .xib 파일을 만드는 데 사용한 단계를 검토 한 결과 스토리 보드에서보기를 복사하는 데 문제가있는 것처럼 보입니다. Interface Builder에 연결하십시오. 뒤늦은 견해로는 이것이 의미가 있지만,보기가 오류없이 복사되는 것처럼 보이고 다른 모든 것들은 괜찮아 보이는 것처럼 보입니다.

비슷한 문제가 others에 의해 발생했으며 비슷한 results 인 것으로 보입니다. 내 모달 뷰 초기화/ALLOC 위의 초기 코드를 사용할 수있어 새로운 일에 초기 클래스의 nib 파일 (⌘-N) 및 복사 코드 UITableViewController 완전히 깨끗한 하위 클래스를 만들어

.

BTW init을 사용할 때 nib 파일을 올바르게로드하는 것에 대해 오프닝 포스트에서 잘못 생각했습니다. 실제로는이 동작이 발생하지 않습니다. UITableViewControllerapparently .xib 파일과 동일한 클래스 이름을 가진 다른 클래스는 먼저 .xib를로드하려고 시도합니다.

+0

정확히 똑같은 일이 내게 일어 났고 추적하기 힘들었습니다. 귀하의 의견은 좌절의 더 많은 시간을 절약! –

+0

정확히 어떤 부분을 물어봐도 될까요? – craigmarch

+0

ARC가 활성화 된 프로젝트에서 스토리 보드의보기를 .xib로 복사하면 응용 프로그램이 중단되었습니다. 사본에있는 뭔가가 내가보기를 밀면 바로 내 조회수를 감소시키고있었습니다. –

0

버튼 인 경우 버튼을 눌렀을 때 아무 것도 초기화하지 말아야합니다. 미리 초기화하고 버튼을 누를 때 간단히 modalViewController을 표시해야합니다.

rootViewController 및 내비게이션 컨트롤러를 앱 didFinishLaunchingWithOptions 방법으로 초기화 할 수없는 이유가 있습니까?

+0

하지만 반드시 사용되기 전에 개체 방법을 초기화하고 사용하지 않을 가능성이 있습니까? – craigmarch