2009-06-12 2 views
0

저는 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"의 내용 만 표시하려면 어떻게합니까?

미리 도움을 주셔서 감사합니다.

답변

0

잘, 당신은이 방법

- (IBAction)showChildView:(id)sender { 
    if (self.childViewController == nil) { 
     ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil]; 
     self.childViewController    = childController; 
     [childController release]; 
    } 
    [self.mainViewControlle.view removeFromSuperView]; 
    [self.view insertSubview:childViewController.view atIndex:0]; 
} 

이 도움이 희망을, 새로운 서브 뷰를 삽입하기 전에, 먼저 원래보기를 제거해야합니다.

+0

"showChildView :"이 "MainViewController.m"에 정의되었으므로 "[self.mainViewController.view removeFromSuperView]"메시지가 작동합니까? 이 코드 줄을 사용하여 프로젝트를 빌드하면 컴파일러 오류가 발생합니다. "멤버 'mainViewController'에 대한 구조체 또는 공용체의 요청이 없습니다." 여기에 무슨 일이 일어나고 있는지 아십니까? – sungl

+0

어때 대략 MyAppDelegate * appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication] delegate]; MainViewController * main = (MainViewController *) [appDelegate mainViewController]; UIWindow * window = (UIWindow *) [appDelegate 창]; [main.view removeFromSuperView]; [window addSubview : childViewController.view]; – Zteeth

0

유틸리티 앱 샘플을 확인해보십시오.이 유틸리티는 두 개의 뷰를 애니메이션으로 전환하고 상위 뷰에서 뷰를 추가/제거하는 방법을 보여줍니다.

+0

팁 주셔서 감사합니다! 그것은 매우 도움이 보입니다. :) – sungl

0

기본보기에서 탐색 컨트롤러를 만들고 showChildView를 호출 할 때 childviewcontroller를 밀어 넣기를 원할 수 있습니다. 그런 방향으로 뒤로 탐색 버튼을 가져옵니다.

+0

고맙습니다. 또 하나의 좋은 아이디어입니다! – sungl

관련 문제