-1

У меня есть одно приложение просмотра, которое использует Parse для создания PFLogInViewController. Прежде чем доступ к BeaconViewController будет доступен, пользователь должен пройти аутентификацию с помощью Facebook - это работает нормально. Моя проблема связана с частью выхода - после того, как сеанс пользователя был уничтожен, мне нужно вернуть PFLogInViewController. Я попытался выполнить это, нажав на RootViewController, но это не решает проблему.Перезагрузка iOS View Controller

Я ссылался на 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

FYI. 'viewDidLoad' и' viewDidAppear' не для вас. Они предназначены для вызова системы. –

+0

Также, пожалуйста, объясните нижний предел - я изучил это как можно раньше и предоставил необходимые фоновые сведения. – Anconia

+2

. Вы должны попытаться рассказать о своем вопросе более общим образом и отделить его от нерелевантных особенностей (PFViewController, Facebook, blah) ваш проект. В то же время вы оставляете существенную информацию (какой контроллер представляет этот контроллер). Хотя у меня есть идея, в чем причина вашей проблемы (вы не можете уволить и просмотреть контроллер вида с контроллера представления, который должен быть показан), решение этого заключается в том, чтобы прочитать основы контроллеров View, а не взломать ваши не хватает базовых знаний о правильном использовании контроллера представления: http://bit.ly/1pifOy5 – auco

ответ

0

можно использовать:

[self.navigationController popViewControllerAnimated:YES]; 
0

Измените ваш тип переход тужиться. Добавьте эту строку кода в свой метод действия 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]; 
} 
Смежные вопросы