-1

我有一個單一的視圖應用程序,利用分析來創建一個PFLogInViewController。在BeaconViewController可以被訪問之前,用戶必須通過Facebook進行身份驗證 - 這工作正常。我的問題是註銷部分 - 在用戶會話被銷燬後,我需要PFLogInViewController重新出現。我試圖通過彈出到RootViewController來實現這一點,但這不能解決問題。重新加載iOS視圖控制器

我參考this線程以及this之一,但再次沒有任何運氣。

這裏是BeaconViewController.m與認證和註銷邏輯

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    FBRequest *request = [FBRequest requestForMe]; 
    [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
     if (!error) { 
      [self dismissViewControllerAnimated:YES completion:nil]; 
      [self pictureRequest]; 
     } 
     else if (error) { 
      NSLog(@"facebook session was invalid"); 
      [self logoutButtonAction:nil]; 
      PFLogInViewController *login = [[PFLogInViewController alloc] init]; 
      login.fields = PFLogInFieldsFacebook; 
      login.delegate = self; 
      NSArray *permissionsArray = @[ @"user_about_me", @"user_relationships", @"user_birthday", @"user_location"]; 
      login.facebookPermissions = permissionsArray; 
      [self presentViewController:login animated:YES completion:nil]; 
     } 
     else { 
      NSLog(@"Some other error: %@", error); 
     } 
    }]; 
} 


- (IBAction)logoutButtonAction:(id)sender { 
    [PFUser logOut]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

enter image description here

+0

僅供參考。 'viewDidLoad'和'viewDidAppear'不適合你打電話。他們是爲系統打電話。 – 2014-11-04 21:52:34

+0

另外,請解釋downvote - 我事先研究了這一點,並提供了必要的背景細節 – Anconia 2014-11-04 22:19:38

+2

您應該嘗試用更通用的方式來描述您的問題,並將其與不相關的細節(PFViewController,Facebook,blah)你的項目。與此同時,你遺漏了重要的信息(控制器呈現這個控制器的是什麼)。雖然我知道你的問題的原因是什麼(你不能忽略並重新顯示將要顯示的視圖控制器的視圖控制器),但解決方案是閱讀視圖控制器的基礎知識,而不是繞過你的缺少關於如何正確使用視圖控制器的基本知識:http://bit.ly/1pifOy5 – auco 2014-11-04 22:32:31

回答

0

嘗試使用:

[self.navigationController popViewControllerAnimated:YES]; 
0

更改您的SEGUE型推。將這行代碼添加到您的IBAction操作方法中。

- (IBAction)logoutButtonAction:(id)sender 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
0

我通過抽象邏輯呈現PFLogInViewController成一個輔助方法並調用退出時解決了這個。

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    FBRequest *request = [FBRequest requestForMe]; 
    [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
     if (!error) { 
      [self dismissViewControllerAnimated:YES completion:nil]; 
      [self pictureRequest]; 
     } 
     else if (error) { 
      NSLog(@"facebook session was invalid"); 
      [self logoutButtonAction:nil]; 
      [self presentPFLogInViewController]; 
     } 
     else { 
      NSLog(@"Some other error: %@", error); 
     } 
    }]; 
} 

-(void)presentPFLogInViewController { 
    PFLogInViewController *login = [[PFLogInViewController alloc] init]; 
    login.fields = PFLogInFieldsFacebook; 
    login.delegate = self; 
    NSArray *permissionsArray = @[ @"user_about_me", @"user_relationships", @"user_birthday", @"user_location"]; 
    login.facebookPermissions = permissionsArray; 
    [self presentViewController:login animated:YES completion:nil]; 
} 

- (IBAction)logoutButtonAction:(id)sender { 
    [PFUser logOut]; 
    [self presentPFLogInViewController]; 
} 
相關問題