2015-10-14 1 views
1

Я использую Parse/Swift с пользовательской кнопкой входа в систему Facebook. Он успешно загружается, и пользователь может войти в систему, но когда он успешно входит в систему, отображается только вспышка MainViewController, а затем возвращается на страницу входа.Facebook Sign In Segue To Main ViewController With Swift and Parse

Как я могу использовать его для использования в режиме segue или перейти к Main View Controller после успешного входа в Facebook? Каков правильный код для Swift 2?

Ниже мой код в моем SignInViewController для моей кнопки Facebook:

@IBAction func didTapFacebookConnect(sender: AnyObject) { 
    let permissions = [ "public_profile", "email", "user_friends" ] 

    PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block: { 
     (user: PFUser?, error: NSError?) -> Void in 

     self.dismissViewControllerAnimated(true, completion: nil) 

     if let user = user { 
      if user.isNew { 
       print("User signed up and logged in through Facebook!") 
      } else { 
       print("User logged in through Facebook!") 
       self.dismissViewControllerAnimated(true, completion: nil) 
      } 
     } else { 
       print ("The user cancelled the Facebook; login.") 
     } 
    }) 

EDIT:

Это теперь мой новый код, но все с тем же вопросом, где новый ViewController выскакивает кратко, но затем вернитесь на страницу входа.

Это ошибка, которую я получаю. Предупреждение: попытка представить UITabBarController: 0x7face0f619f0> on U **** d.SignInViewController: 0x7face0d1c310, чей вид не находится в иерархии окон!

@IBAction func didTapFacebookConnect(sender: AnyObject) { 
    let permissions = [ "public_profile", "email", "user_friends" ] 

    PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block: { 
     (user: PFUser?, error: NSError?) -> Void in 

     self.performSegueWithIdentifier("fbSignIn", sender: self) 

     if let user = user { 
      if user.isNew { 
       print("User signed up and logged in through Facebook!") 


      } else { 
       print("User logged in through Facebook!") 

      } 
     } else { 
       print ("The user cancelled the Facebook; login.") 
     } 

ответ

1

Прямо сейчас, если пользователь подписывается успешно, вы на самом деле вызываете функцию диспетчера увольнения дважды. Я не уверен в потоке раскадровки ваших контроллеров, но здесь нет никаких свидетельств.

dismissViewController(true,completion:nil) 

Однако, если вы создали SEGUE из журнала контроллера на главном экране вашего приложения в вашем storboard, после успешной регистрации или отправки логина, вы должны вызвать следующие с соответствующим идентификатором.

performSegueWithIdentifier("SEGUEIDENTIFIER",sender:nil) 

Кроме того, совет будет необходимо проверить PFUser.currentUser(), чтобы проверить, есть ли в кэше экземпляр пользователя, так что вы можете непосредственно перейти сразу к контроллеру домой вид, не требуя от пользователя для входа в каждый раз.

+0

добавил это ... performSegueWithIdentifier ("goSignIn"), но получите сообщение об ошибке .... не может преобразовать значение типа 'String' в ожидаемый тип аргумента ..... и т. Д. –

+0

i обновил вызов аргумента для performSegueWithIdentifier. Вы должны передать параметр отправителя nil для случая. Кроме того, убедитесь, что вы создали segue и указали ему идентификатор, иначе будет выбрано исключение. – user2532485

+0

Я обновил свой код с помощью функции segue, но проблема все еще происходит. Новый ViewController появится, а затем он вернется на страницу SignIn. –