저는 Obj-C와 iphone 개발을 처음 접했습니다. 내 질문은 어떻게 응용 프로그램 대리인에서 하위 뷰를 추가하는 것입니다. "applicationDidFinishLaunching"메서드에서 "MainView"라는 하위 뷰를 추가했다고 가정 해 보겠습니다.기본보기에서 하위보기를로드하는 방법은 무엇입니까?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
MainViewController *aViewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
self.mainViewController = aViewController;
[aViewController release];
[window addSubview:mainViewController.view];
// Override point for customization after application launch
[window makeKeyAndVisible];
}
"MainView.xib"파일은 자식보기를 표시하는 버튼이 있습니다. 버튼을 클릭하면 "showChildView"메서드가 호출됩니다.
- (IBAction)showChildView:(id)sender {
if (self.childViewController == nil) {
ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil];
self.childViewController = childController;
[childController release];
}
[self.view insertSubview:childViewController.view atIndex:0];
}
이 코드에서 앱이 실행되면 버튼이있는 "MainView"가 표시됩니다. 그러나 단추를 클릭하면 "ChildView.xib"파일의 내용과 함께 단추가 계속 표시됩니다.
버튼을 눌렀을 때 "MainView"를 숨기고 "ChildView"의 내용 만 표시하려면 어떻게합니까?
미리 도움을 주셔서 감사합니다.
"showChildView :"이 "MainViewController.m"에 정의되었으므로 "[self.mainViewController.view removeFromSuperView]"메시지가 작동합니까? 이 코드 줄을 사용하여 프로젝트를 빌드하면 컴파일러 오류가 발생합니다. "멤버 'mainViewController'에 대한 구조체 또는 공용체의 요청이 없습니다." 여기에 무슨 일이 일어나고 있는지 아십니까? – sungl
어때 대략 MyAppDelegate * appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication] delegate]; MainViewController * main = (MainViewController *) [appDelegate mainViewController]; UIWindow * window = (UIWindow *) [appDelegate 창]; [main.view removeFromSuperView]; [window addSubview : childViewController.view]; – Zteeth