2012-02-03 5 views
0

У меня возникли проблемы со следующим.Вход/Выход с UITabBarController?

Банкоматы я есть LoginView, который посылает пользователю к проверке tabbarcontroller.After пользователь отправляется на tabbarcontroller со следующим кодом:

-(void)userSuccessfullyLoggedIn{ 

     [self.window setRootViewController:myTabBarController]; 
     [myTabBarController setSelectedIndex:0]; 
     [self.window makeKeyAndVisible]; 
} 

После этого пользователь успешно отправлен на первый взгляд на вкладке.

5-й элемент на панели вкладок содержит пустой вид, чтобы «вывести» пользователя из панели управления tabbar обратно в LoginView.

// The following code intercepts the popup that confirms the "log out" dialog. 

-(void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ 
     // index 0 is the YesButton that is supposed to "log out" the user. 
     if (buttonIndex == 0) 
     { 
      myAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

      [appDelegate userLogsOut]; 


     } 
     else{ 

       NSLog(@"The user chose not to logout. Passing the user to the first tab"); 

       [[self myTabBarController] setSelectedIndex:0]; 

      }  
} 

код [делегат userLogsOut] код выглядит следующим образом:

-(void)userLogsOut{ 

     [self.window setRootViewController:myLoginViewController] 
     [self.window makeKeyAndVisible]; 
} 

А теперь описать проблему.

Он работает так же, как я хочу, за исключением случаев, когда пользователь снова входит в систему и должен приземлиться на первой вкладке, содержащей первый вид, всплывающее диалоговое окно из пустого logoutView просто появляется из ниоткуда.

Первый вид отображается в фоновом режиме, и если выбрано НЕ для выхода из системы, диалог исчезает, если пользователь выбирает ДА ​​в этот момент, пользователь снова выходит из системы.

Спасибо за чтение, и любые советы и/или указатели будут высоко оценены. Заранее спасибо.

+0

Я пытаюсь реализовать подобную проблему - логин и контроллер панели вкладок из него. Где вы определяете myTabBarController во входе? Я использую раскадровку. Благодаря! – Dejell

+0

'UITabBarController' определен в' UIApplicationDelegate'. Это было сделано без раскадровки. – doge

ответ

2

Извините, я не могу проверить его сейчас, но я думаю, что когда вы входите в систему во второй раз, вкладка «Выход» (пятая вкладка) по-прежнему активна, когда вызывается [self.window setRootViewController:myTabBarController];, прежде чем вы выберете первую вкладку с [myTabBarController setSelectedIndex:0];. Вы можете попробовать переключения первой и второй линии в - (void)userSuccessfullyLoggedIn как:

-(void)userSuccessfullyLoggedIn{ 

    [myTabBarController setSelectedIndex:0]; 
    [self.window setRootViewController:myTabBarController]; 
    [self.window makeKeyAndVisible]; 
} 
+0

Никогда не ударил меня ... Спасибо. – doge