-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]; 
} 
相关问题