2009-05-20 5 views
1

UITabViewController에서 뷰가 아닌 펜촉을로드하려고합니다. 여기에 내가 지금 무엇을 가지고있어 그것이 작동하지 않습니다,하지만 당신에게 내가 원하는 걸의 아이디어 제공해야합니다 : 당신이보기에서 버튼을 누르면UITabViewController에서보기가 아닌 NIB를로드하려면 어떻게해야합니까?

- (IBAction)PlaylistButtonPressed:(id)sender 
{ 
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil]; 

    [self.view addSubview:music.view]; 

    [music release];  
} 

을, 아이디어는 다른 펜촉, MusicPick를로드하는 것입니다, 하위 뷰로로드되고, 무언가를 선택하고 여기로 바로 돌아옵니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

조금 더 자세히 설명하려면 다음을 수행하십시오.

addSubView를 사용하거나 컨트롤러를 UITabBarController보기로 밀어 넣어 기존 UIViewController보기에보기를 추가 할 수 있습니다. 후자의 경우 UITabBarController는 RootViewController가있는 UINavigationController이어야합니다.

나는 그것이 당신이 의미하는 것입니다. 그러므로 당신은 다음과 같은 것을 할 것입니다.

- (IBAction)PlaylistButtonPressed:(id)sender 
{ 
    // Load UIViewController from nib 
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil]; 

    // Add to UINavigationController's stack, i.e. the view for this UITabBarController view 
    [self.navController pushViewController:music animated:YES]; 

    // Release music, no longer needed since it is retained by the navController 
    [music release]; 
} 

이것은 사용자가 UITabBarController에서보기로 UINavigationController가 있다고 가정하고 navController라고합니다.

UITabBarController (예 : 오버레이)의 UIViewController보기에 UIView를 추가하려면 이미 알아 낸 것처럼 addSubView를 사용할 수 있으며 UINavigation Controller는 필요하지 않습니다.

3

UITabBarController에 직접 하위보기를 추가 할 수 없습니다. 이 컨트롤러 중 하나가 작동하는 방식은 UIViewController의 목록을 저장하고 각 탭에 표시하는 것입니다. 그러나 그들은 세 번째 뷰가 아닙니다. 이 목록을 업데이트하는 것 외에는 탭 바 컨트롤러 자체를 수정하지 않아도됩니다.

탭 표시 줄 컨트롤러의 항목에 영향을 줄 수있는 옵션을 사용자가 선택할 수 있도록 임시보기로 표시 했으므로이보기를 모달보기로 제시하는 것이 좋습니다 이상 탭보기. UIViewControllerpresentModalViewController:animated:dismissModalViewControllerAnimated: 방법을 살펴보십시오. MusicPickUIViewController의 하위 클래스라고 가정하고, 할당 된 후에 (이 코드를 첫 번째 코드 행 에서처럼)이 메소드에 전달하면 UIKit이 나머지를 처리합니다. 선택한 값이나 사용자가 입력 한 데이터를 가져 왔을 때 해당 인스턴스를 MusicPick 릴리스해야합니다.