뷰 기반 응용 프로그램으로 새 xcode 프로젝트를 만들었으며 UINavigationController
(s) 안에 사용할 UIViewController
(s) 세트가 있습니다.self.navigationController가 RootViewController로 할당 된 후 null입니까?
NSMutableArray *navControllers = [[NSMutableArray array];
for (id aVC in self.myViewControllers) {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:aVC];
//[aVC setNavigationController:navController];
[navController setNavigationBarHidden:YES];
[navController setToolbarHidden:YES];
[navControllers addObject:navController];
[navController release];
}
_navigationControllers = [[NSArray arrayWithArray:navigationControllers] retain];
_navigationControllers
이 ParentViewController
의 구성원으로 유지됩니다, 그래서가 루프 내부의 시작 내 모든 네비게이션 컨트롤러를 가정 유지 : 모든 UINavigationController
(들) 및 모든 myViewControllers가 시작된 후 이전 ParentViewController.m
에서
_navigationControllers
에 의해 그래서 그들은 공개 또는 nil
될,하지만 난 SomeOtherViewController
을 밀어 MyViewController
에있는 navigationController를 사용하려고하면, 그것은 작동하지 않습니다되지 않습니다 :
- (IBAction)pushDetailView {
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
pushViewController:someOtherViewController
앞에 중단 점을 넣고 "po [self navigationController]"라고 콘솔에 알려 주면 nil
참조입니다.
[[UINavigationController alloc] initWithRootViewController:aVC]
을 수행 할 때 애플 'iOS 용보기 컨트롤러 프로그래밍 가이드 "
rootController
에
navigationController
를 지정하지 않고 동일한 않기 때문에, 기본 메커니즘은,
aVC.navigationController
로
navigationController
을 할당한다고 가정한다.
루프 용 두 번째 줄의 표시를 취소하지 않으면 //[aVC setNavigationController:navController];
navigationController
이 AVC에 존재하지 않습니다.
나는 메커니즘을 오해하고 있습니까? 저의 경우 다른 해결책이 있습니까? 미리 감사드립니다.
parent.h 파일에서 _navigationController에 대한 속성 선언을 표시 할 수 있습니까? 질문에 대한 귀하의 모든 가정/논리가 괜찮은 것 같습니다 (예 : initWithRootViewController가 루트보기 컨트롤러에서 navigationController 속성을 자동으로 설정해야 함) – gamozzii