Переключение между UITabBarController и UIViewController (iOS Xcode) - PullRequest
1 голос
/ 02 января 2012

Я потратил целую вечность на это: используя шаблон панели вкладок (без раскадровки), я могу легко переключаться между вкладками и переключаться между представлениями в каждой таблице, однако, когда дело доходит до переключения между UITabBarController и UIViewController любой код, который я продолжаю пробовать, не будет работать.

-(IBAction)tabtoview:(id)sender{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
                           forView:self.view
                             cache:YES];
    [self.tabBarController removeFromParentViewController];   
    [self.view addSubview:self.mainscreen]; //Crashes here
    [UIView commitAnimations];
}

Вместо удаления tabBarController было бы предпочтительнее, если бы я мог скрыть / отключить его после анимации.Спасибо за любую помощь, спасибо!

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Я думаю, что ваша проблема в том, что UITabBarController и UINavigationController - это те контроллеры, которые не могут быть обработаны так, как вы делаете.

Вам лучше создать подкласс UIWindow в app delegateи переместите метод -(IBAction)tabtoview:(id)sender; в подкласс UIWindow.Я пытался, и это работает.

Причина в том, что у вас должен быть контроллер, чтобы нести ответственность за переключение представлений .То, что вы пытаетесь сделать, это менять контроллеры, а не представления.И это конфликт.Вкладки являются частью UITabController, они не являются представлениями!Это также та же история для UINavigationController.

Итак, если вы просто меняете представления, вы можете сделать это прямо в одном из ваших viewControllers, но замена контроллера на другой (т. Е. UIViewcontroller с UITabBarController) должна обрабатываться на более высоком уровне,т.е. приложение делегат.Единственный экземпляр, доступный на этом уровне, это ваш UIWindow.

0 голосов
/ 03 января 2012

Почему бы не использовать

UIView *v = [[UIView alloc] initWithFrame:[[UIApplication mainScreen] bounds]];  
[self presentModalViewController:v animated:YES];

Я думаю, что это должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...