2013-09-19 3 views
1

Я разрабатываю ViewController (логин приложение) с помощью одной кнопки, при нажатии на эту кнопку, я хочу, чтобы появиться мой UISplitView так:дисплеем SplitViewController от UIViewController в Objective-C

- (IBAction)loadSplitViewController:(id)sender { 

    [self showSplitViewController]; 
} 

и код разработан для создания моего splitViewController это:

-(void)showSplitViewController{ 

    UIStoryboard *mainStoryboard     = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle: nil]; 

    LeftViewController  *leftViewController  = [mainStoryboard instantiateViewControllerWithIdentifier:@"LeftViewController"]; 
    RightViewController  *rightViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"RightViewController"]; 

    UINavigationController *leftNavController  = [[UINavigationController alloc] initWithRootViewController:leftViewController]; 
    UINavigationController *rightNavController  = [[UINavigationController alloc] initWithRootViewController:rightViewController]; 

    UISplitViewController *splitViewController = [[UISplitViewController alloc] init]; 
    splitViewController.viewControllers    = [NSArray arrayWithObjects:leftNavController, rightNavController, nil]; 

    leftViewController.delegate  = rightViewController; 
    splitViewController.delegate = rightViewController; 

    [self presentViewController:splitViewController animated:YES completion:^{}]; 
} 

вещи ... если я использую для показа моего splitViewController этой строки:

[self presentViewController:splitViewController animated:YES completion:^{}]; 

бросает мне ошибку

Я также попытался с

[self.view addSubview:splitViewController.view]; 

, но этот путь мой splitViewController никогда не вращается, и делегаты не работает, как хорошо ... и я не хочу, чтобы мой splitViewController к быть подвид моего ViewController, я хочу, чтобы это появилось больше как independient modalView

любой помощи я ценю

заранее спасибо

+0

вместо [self presentViewController: splitViewController animated: YES завершение:^{}]; просто попробуйте [self presentViewController: splitViewController animated: YES завершение: nil]; – user2277872

+0

спасибо за помощь, с вашим кодом Я получил это: Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «Приложение попыталось представить контроллеры с разделенным представлением modally ». = p –

+0

ах, да. Я не уверен, что вы можете полностью сделать UISplitViewController. Внутри метода showSplitViewContoller попробуйте добавить UIPopoverController и установить rootViewContorller этого popoverController на контроллер разделенного представления. Или вы можете просто создать класс, являющийся подклассом UISplitViewController – user2277872

ответ

5

Сплит-контроллеры на самом деле должны быть контроллером корневого представления окна (на самом деле Apple говорит, что это должно быть, хотя, похоже, есть примеры, где это не так). Вместо того, чтобы представлять его, вы можете просто переключить контроллер корневого представления окна на контроллер разделенного вида.

self.view.window.rootViewController = splitViewController; 
+0

Лучший ответ !!! работая 100% спасибо вам большое! = D –

Смежные вопросы