나는 몇 시간 동안이 문제를 해결하려고 노력해 왔습니다. 나는 도처에서 수색 해 왔고 내 문제에 대한 해결책을 찾을 수없는 것 같습니다. 나는 여기에 핵심 개념이 부족하다는 것을 확신한다.modalViewController를 가져 오는 데 문제가 있습니다.
내 AppDelegate에 (didFinishLaunching는) 기본적으로 내 창을 설정하고 호출 RootViewController는 :
// create our window UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [window setBackgroundColor:[UIColor blackColor]]; // create our rootviewcontroller RootViewController *controller = [[RootViewController alloc] init]; // add our rootviewcontroller's view to our window [window addSubview:controller.view]; // controller is now owned by window's view [controller release]; // show us to the world [window makeKeyAndVisible];
나는 윈도우의 서브 뷰으로 controller.view을 추가, 나의 이해는 RootVC의에는 loadView가 자동으로 호출되는 것입니다.
RootVC loadView에서 navigationController가있는 각 탭에 tabBarController를 만들고 자체 viewController를 만듭니다. 모두 잘 작동합니다.
RootVC viewDidLoad에서 사용자가이 앱을 처음 실행하는지 확인하고, 그렇다면 모달 시작 화면을 표시하고 싶습니다. 이것이 내가 문제가되는 부분입니다.
나는이와 내가 원하는 것을 달성 할 수있을 것입니다 이상적 RootVC의 viewDidLoad에 방법에서 많은 코드를 유지, 그리고 것 :
WelcomeViewController *welcome = [[WelcomeViewController alloc] init]; [self presentModalViewController:welcome animated:true]; [welcome release];
분명히이 작동되지 않습니다. WelcomeVC의 loadView는 뷰 속성을 명시 적으로 설정하지 않았기 때문에 아직 실행되지 않았습니다. WelcomeVC의 init 메소드를 사용하여 self.view를 사용하여 다양한 솔루션 (welcome.view - [[UIView ....])을 가지고 놀았지만, 그 모달을 팝업 할 수없는 것 같습니다.
내가 원하는 것을 어떻게 성취해야합니까? 모범 사례는 무엇이며 내 코드를 단단하고 깔끔하게 유지하는 가장 좋은 솔루션은 무엇입니까?
내 솔루션이 계속해서 내 앱을 개발할 수 있도록 노력하겠습니다.
질문과 관련이 없지만 [window addSubview : controller.view]가보기 컨트롤러를 유지하지 않을 것이라고 생각합니다. – MHC
@MHC - 자세히 설명해 주시겠습니까? 왜 그렇게 생각하니? 나는 뷰가 서브 뷰를 추가 할 때마다 그 서브 뷰가 유지 될 것이라고 생각했다. – djibouti33
하위 뷰는 유지되지만 뷰 컨트롤러는 유지되지 않습니다. – MHC