Hei, the code bellow somehow doesn't work with segue. It returns:
Warning: Attempt to present on whose view is not in the window hierarchy!
Code runs in IBAction Button. Then I perform segue without PFFacebookUtils code, it works fine. From that i guess segue can't be called from PFFacebookUtils because it works somehow in background.
Code:
PFFacebookUtils.logInInBackground(withReadPermissions: permissions) {
(user: PFUser?, error: Error?) -> Void in
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
self.performSegue(withIdentifier: "segueSignUpWindow", sender: nil)
} else {
print("User logged in through Facebook!")
self.performSegue(withIdentifier: "segueSignUpWindow", sender: self)
} else {
print("Uh oh. The user cancelled the Facebook login.")
self.loginCancelledLabel.alpha = 1
}
}
I've tried to insert additional code like:
DispatchQueue.main.async {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "SignUp")
self.show(vc, sender: self)
print("Hello")
Or with function:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "segueSignUpWindow") {
DispatchQueue.main.async {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "SignUp")
self.show(vc, sender: self)
print("Hello")
}
}
Nothing works. Does anyone has a working solution? My goal is to make segue to another storyboard after sign in or login proceeded.
I've looked to most threads in stackoverflow. Didn't find working solution.
The closest I can get:
Made trigger var segueLogin : Bool = false with initialised value.
When PFFacebookUtils gets needed values for segue, change trigger to true:
Then added code to viewDidAppear class. Realised it starts everytime PFFacebookUtils complete. So it checks if returned value is true and performs segue after successful PFFacebookUtils session: