2012-09-07 8 views
0

내가하려는 것은 가능하지만 원하는 결과가 없기 때문에 나는 모릅니다.
내가 뭘 해야하는지 그리고 presentViewController를 사용하여 이전 ViewController에서 SplitViewController를 호출해야합니다.
SplitViewController는 rootViewController가되어야하지만, 내가해야 할 일을 성취하기 위해 가능한 가장 가능한 옵션을 찾아야합니다.
버튼이있는 MainMenu가 있고 버튼마다 SplitViewController를 호출해야합니다. 첫째, 어떻게 할 수 있습니까?
난 할 노력하고있어입니다 : 먼저, AppDelegate에에서 나는 MAINMENU를 호출하고있어, 및 하위 뷰와 다른 것들로 추가 : 내가 호출있어 MAINMENU에,presentModalViewController를 사용하여 SplitViewController를 표시 할 수 있습니까?

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [window addSubview:self.mainMenu.view]; 
    [self.mainMenu presentModalViewController:self.firstMenu animated:NO]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

다음 SecondViewController는 모달 뷰에서이 코드를 사용 :

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    UISplitViewController *splitViewController = [[UISplitViewController alloc]init]; 

    SecondMenuViewController *secMenu = [[SecondMenuViewController alloc]init]; 
    UINavigationController *navLef = [[UINavigationController alloc]init]; 
    [navLef pushViewController:secMenu animated:NO]; 

    SecondMainViewController *secMain = [[SecondMainViewController alloc]init]; 
    UINavigationController *navRig = [[UINavigationController alloc]init]; 
    [navRig pushViewController:secMain animated:NO]; 

    splitViewController.delegate = secMain; 
    splitViewController.viewControllers = [NSArray arrayWithObjects:navLef, navRig, nil]; 

    MainAppDelegate *mainApp = [[MainAppDelegate alloc]init]; 
    [mainApp changeRootViewController:splitViewController]; 

    navRig = nil; 
    navLef = nil; 
    secMain = nil; 
    secMenu = nil; 
    splitViewController = nil; 
} 
012 :이 SecondViewController에서

SecondViewController *secV = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil]; 
secV.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:secV animated:YES]; 

을,이 코드를 사용하여, 마스터 & DetailViewController의로, SplitViewController을 만드는거야

SplitViewController는 RootViewController 여야하기 때문에 MainAppDelegate의 메서드를 호출하여 뷰와 RootViewController를 변경합니다.

내가 아는
-(void)changeRootViewController:(UISplitViewController *)splitViewController{ 
    [self.window addSubview:splitViewController.view]; 
    self.window.rootViewController = splitViewController; 
} 

는,이 엉망처럼 보인다 :이 방법이다. 그리고 내가 실행할 때 SplitViewController는 결코 보여주지 않습니다. 그래서 내가하려고하는 것은 불가능합니다. 아니면 내가 틀린거야? 이것이 전부라면 MainViewController 다음에 SplitViewController를 표시하려면 어떻게해야합니까? 내가 XCode4.4 및 iOS5를 을 사용하고
application:didFinishLaunchingWithOptions:UISplitViewController 루트 뷰 컨트롤러를 만드는 것이 당신에게

답변

0

더 좋은 방법 대단히 감사합니다. 그런 다음 위에 MainMenu을 선물하십시오. 분할보기 컨트롤러에 표시된 하위보기를 사용자가 MainMenu에서 푸시하는 버튼과 일치하도록 변경할 수 있습니다.

+0

감사합니다 ...이 옵션은 빠르고 유용하게 보입니다. 이미 테스트했지만, 이제는 2 가지 문제가 있습니다. 첫 번째는 내 MainMenu에서보기를 "저장"해야한다는 것입니다. 왜냐하면 돌아갈 필요가있을 때 MainMenu에서 마지막 옵션을 표시해야하기 때문입니다. 내 UIView 복사 할 수 없기 때문에 제거하고 다시 할당하기 전에 다른 UIView 내보기를 복사하려고했지만 아무 일도 발생하지 않습니다. 두 번째 문제는 시뮬레이터를 회전 할 때 self.firstMenu가 회전하지 않는다는 것입니다. self.firstMenu는 버튼/옵션이있는보기입니다. – user1600801

0

먼저 didFinishLaunchingWithOptions:이 너무 짧아 presentModalViewController을 호출 할 수 없습니다. 아직 인터페이스가 없습니다!

둘째, 루트보기 컨트롤러가없는 것 같습니다. (아마도 당신이 펜촉을 사용하고 있을지 모르지만, 현재 응용 프로그램 템플릿에 표시된 기술을 사용하면됩니다.)

세 번째로 사용자 지정 컨테이너 뷰가 있으므로 UISplitViewController를 전혀 사용할 필요가 없습니다. UISplitViewController는 잘 구성된 클래스가 아니기 때문에 자신 만의 뷰/뷰 컨트롤러 계층 구조를 구성 할 수 있으며 그렇게하는 것이 더 행복 할 수도 있습니다.

+0

감사합니다.SplitViewController 인 척하면서 내 자신의 ViewController Hierarchy를 구성하는 것이 좋겠다. 시도해 보겠다.하지만 초보자 일 뿐이다. 이미 완성 된 것을 사용하는 것이 복잡하다면, 나 자신이 될 것이다. 매우 큰 도전 .. 조언을 주셔서 감사합니다 – user1600801

+0

내 책에서 자신의 viewcontroller 계층 구조를 만드는 방법에 대한 자세한 정보 : http://www.apeth.com/iOSBook/ch19.html#_container_view_controllers – matt

+0

공유 주셔서 감사합니다 자료 – user1600801

관련 문제