2013-09-07 2 views
3

У меня есть приложение, чья начальная сцена является контроллером панели вкладок с 3 вкладками. Я создал класс uitabbarcontroller и установил его в эту сцену (MainTabViewController).Как я могу представить Modal VIew Controller из TabBarController

В этом классе я называю presentLogin от метода viewDidAppear и что метод читает:

- (void)presentLogin{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    if (![prefs stringForKey:@"storedUser"] && ![prefs stringForKey:@"storedPass"]) { 
     NSLog(@"No user prefs stored"); 

     // BUT WAIT, before all this, lets pop up a view controller for user registration 
     UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
     ModalViewController *popupController = [sb instantiateViewControllerWithIdentifier:@"ModalViewController"]; 
     [self presentViewController:popupController animated:YES completion:nil]; 

    } else { 
     NSString *storedUser = [NSString stringWithFormat:@"User:%@",[prefs stringForKey:@"storedUser"]]; 
     NSString *storedPass = [NSString stringWithFormat:@"User:%@",[prefs stringForKey:@"storedPass"]]; 
     UIAlertView *internetAlert = [[UIAlertView alloc] initWithTitle:storedUser 
                   message:storedPass 
                   delegate:self 
                 cancelButtonTitle:@"Cancel" 
                 otherButtonTitles:@"Ok", nil]; 
     [internetAlert show]; 

    } 
} 

Но modalVC разве показывая по какой-то причине. Я получаю этот журнал аварии:

Attempting to begin a modal transition from <MainTabViewController: 0xa55d0d0> to <ModalViewController: 0x15e2b5e0> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed 

ответ

3

Я считаю, что вы получили эту ошибку, потому что контроллер панели вкладок помещает представление контроллера в свою первую вкладку на экране одновременно с представлением модального контроллера. Вместо того, чтобы представлять его из контроллера панели вкладок, представьте его в методе viewDidAppear контроллера на первой вкладке. Назовите его без анимации, чтобы увидеть контроллер модального представления, не видя первый контроллер табуляции.

+0

Это была АНИМАЦИЯ: НЕТ, что исправила проблему! Спасибо. – marciokoko

1

Попытка добавить маленькую задержку, как показано ниже:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [self performSelector:@selector(presentLogin) withObject:nil afterDelay:0.1]; 
} 
0

Вид на tabbarcontroller содержит viewHierarchies из viewControllers, что сама панель вкладок владеет. Из-за этого может быть что-то. Попытайтесь увидеть, что вы по-прежнему получаете сообщение об ошибке, если на панели есть только один контроллер.