2016-10-06 2 views
0

У меня есть UISplitViewController внутри UITabBarController. Теперь, когда я нажимаю кнопку, я хочу оставить эти два контроллера позади и показать еще один ViewController.Оставьте и SplitViewController изнутри TabBarController

Я использую этот код:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    RegistrationViewController *vc = (RegistrationViewController *)[storyboard instantiateViewControllerWithIdentifier:@"RegistrationViewController"]; 
    UIWindow *window = [UIApplication sharedApplication].keyWindow; 
    window.rootViewController = vc; 
} 

Теперь RegistrationViewController выскакивает на секунду, но тут же исчезает. Как я могу сделать RegistrationViewController пребывания?

ответ

0

Per Apple, документы:

Примечание

»... Несмотря на то, что можно установить контроллер Разделить как ребенок в некоторых других контроллерах зрения контейнер, делать не рекомендуется в большинстве случаев контроллеры с раздельным представлением обычно устанавливаются в корне окна вашего приложения. Советы и рекомендации о способах реализации интерфейса см. в Руководстве по интерфейсу iOS для iOS ».

Вы можете получить непредвиденное поведение (и отклонено представление магазина приложений), если вы это сделаете иначе.

Вы можете быть лучше обслуживаться встраивание UITabBarController как Detail View Controller в UISplitViewController.

Установите переключатель UISplitViewController.preferredDisplayMode в .primaryHidden (скрывает левую 1/3 «Master View», что дает вам полный экран презентации UITabBarController.) Затем вы можете позвонить showDetailViewController, чтобы представить свой RegistrationViewController.

FWIW, у меня была удача встраивания двух UINavigationController в качестве «Master» и «Detail» из UISplitViewController и нажатия и отображения в стек навигации для отображения. Большой учебник здесь, с большим количеством дискуссий о преимуществах использования NavControllers: https://www.raywenderlich.com/94443/uisplitviewcontroller-tutorial-getting-started

Некоторого Swift код:

(Используя выше подход, с контроллерами навигационными как Master и детали, показывая только Подробный вид на UISplitViewController, затем представлении . новый контроллер представления, как Detail View)

@IBAction func createAccountButtonSelected(_ sender: AnyObject) { 
    let registrationVC = self.storyboard?.instantiateViewController(withIdentifier: "RegistrationViewController") as! RegistrationViewController 
    self.navigationController?.pushViewController(registrationVC, animated: true) 
} 

в другом случае, я хотел сбросить навигационные стеки как для главного и подчиненного вида на UISplitViewController (от Detail View Controller):

let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController 
let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
    // Get a reference the the Master View nav controller 
let masterNav = self.splitViewController!.viewControllers[0] as! UINavigationController 
    // Set desired VC's as nav stack RootViewControllers   
self.navigationController?.setViewControllers([matchVC], animated: true) 
masterNav.setViewControllers([masterMatchTableView], animated: true) 
+0

также см .: http://nshipster.com/uisplitviewcontroller/ –

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