2013-12-05 4 views
0

это код для моего facebook входа в систему, когда я закончить вход в FaceBookLogIn.xib не увольняют должным образом,уволить ViewController в ИОС

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

Как я могу уволить viewcontroller, как только пользователь поет?

обновление

я переместить весь код из приложения AppDelegate к моему главному контроллеру

вид и, когда я пою в я получаю в NSLog

«2013-12-07 13: 02: 49.650 barbar [2275: 70b] Найдена пользовательская сессия "

bat все еще вид не предлагается

, если я выйти и вернуться в приложение это показать tabbarviewcontroler и я получу NSLog -

2013-12-07 13: 06: 42.162 Barbar [2303: 70b] Пользователь Записан Innnnn

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

} 

-(void)viewDidAppear:(BOOL)animated{ 


    if (FBSession.activeSession.state 
     == FBSessionStateCreatedTokenLoaded) { 

     NSLog(@"User Logged Innnnn"); 
     //[self dismissViewControllerAnimated:YES completion:Nil]; 
    } 
    //create and present the login view controller 
    else { 
     NSLog(@"the user not login"); 
     FacebookConect * showfacebookconnectview = [[FacebookConect alloc]initWithNibName:@"FacebookConect" bundle:Nil]; 
     [self presentViewController:showfacebookconnectview animated:YES completion:Nil]; 


    } 
    animated = YES; 
} 

- (void)sessionStateChanged:(FBSession *)session 
         state:(FBSessionState) state 
         error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: 
      if (!error) { 
       // We have a valid session 
       NSLog(@"User session found"); 
       [self dismissViewControllerAnimated:YES completion:Nil]; 
      } 
      break; 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      [FBSession.activeSession closeAndClearTokenInformation]; 
      break; 
     default: 
      break; 
    } 

    [[NSNotificationCenter defaultCenter] 
    postNotificationName:FBSessionStateChangedNotification 
    object:session]; 

    if (error) { 
     UIAlertView *alertView = [[UIAlertView alloc] 
            initWithTitle:@"Error" 
            message:error.localizedDescription 
            delegate:nil 
            cancelButtonTitle:@"OK" 
            otherButtonTitles:nil]; 
     [alertView show]; 
    } 
} 

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 
    /* 
    we pass this permissions array into our request 
    I only request email, but there are many more options 
    */ 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"email", 
          nil]; 

    return [FBSession 
      openActiveSessionWithReadPermissions:permissions 
      allowLoginUI:allowLoginUI 
      completionHandler:^(FBSession *session, 
           FBSessionState state, 
           NSError *error) { 
       [self sessionStateChanged:session 
            state:state 
            error:error]; 

      }]; 
} 

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 
    // attempt to extract a token from the url 
    return [FBSession.activeSession handleOpenURL:url]; 
} 



@end 
+0

Хотите ли вы иметь навигационный контроллер или изменить виды? –

+0

i wont to chang views. – Bar

ответ

0

Я бы не рекомендовал использовать AppDelegate для непосредственного отображения экранов входа в систему. Похоже, вы используете Storiesboards/Xib для отображения вашего интерфейса. По этой причине я бы разрешил операцию по умолчанию (потому что вы предотвращаете ее, устанавливая свойство rootViewController вручную). Затем в вашем главном контроллере просмотра проверьте флажок Facebook, который откроет диалоговое окно (presentViewController:animated:completion:), и затем его можно будет отклонить, как указано выше, и будет показан ваш оригинальный контроллер основного вида.

+0

Я вижу, bat У меня есть tabbarviewcontroller, и у меня нет представления, которое не связано с главным контроллером tabbarview, а затем увольняет его, поэтому я могу сделать это любым другим способом? – Bar

+0

Он не должен влиять на контроллер просмотра панели вкладок. Когда вы используете 'presentViewController', он будет всплывать поверх контроллера представления панели табуляции (пока вы его нацеливаете) –

+0

ok, я сделал это, и появилась ошибка« Предупреждение: попытка представить on < UITabBarController: 0x9e679a0> чей вид не находится в иерархии окон! « – Bar

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