2011-12-19 4 views
1

У меня есть приложение на основе табуляции с тремя вкладками. Теперь, когда устройство повернуто от портрета к пейзажу, оно должно загрузить другой UIViewController, и когда режим приложения изменится, альбом будет возвращен в портретный режим, а затем снова отобразится контроллер панели. Как это может быть сделано?Как вызвать tabbarviewcontroller из UIViewController?

+0

Что вы имеете в виду «Это откроет' UIViewController'»? Обратите внимание, что 'UIViewController' является суперклассом UITabBarController и UINavigationController и т. Д. – Besi

+0

Открытая средняя нагрузка a Другой контроллер представления, который унаследован от UIViewController – Shafqat

ответ

0

Я думаю, вы могли бы подойти к проблеме следующим образом со следующим методом. Поскольку у вас есть два разных ViewControllers, которые находятся на одном иерархическом уровне, имеет смысл иметь один ViewController, который управляет этими двумя ViewControllers и показывает соответствующий ViewController, в зависимости от ориентации.

Портрет

  • окно
    • MyRootViewController (UIViewController подкласс)
      • MyTabBarViewController (UITabBarViewController подкласс)

Пейзаж

  • окно
    • MyRootViewController (UIViewController подкласс)
      • MyPortraitViewController (UIViewController подкласс)

Теперь вы г MyRootViewController класса обнаруживает любое вращение (см UIViewController документов) и меняет свое мнение на любой из ваших двух ViewControllers:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 

    // Set the view to the corresponding ViewController (Assuming they were already initialized) 
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)){ 
     self.view = self.myTabBarViewController.view; 
    } else { 
     self.view = self.myPortraitViewController.view; 
    } 
} 

Вы также должны убедиться, что правильный ViewController отображается при запуске/повторной активации вашего Приложение. Для этого вы можете использовать следующий метод в классе MyRootViewController:

- (void)viewWillAppear:(BOOL)animated; 

Я надеюсь, что это помогает

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