Я пытаюсь передать собственность моему следующему VC, используя prepareforSegue. Он называется, однако мой другой VC не загружается.Facebook LoginManager Callback/PrepareforSegue Swift
Оригинал
@IBAction func onSignupPressed(sender: AnyObject) {
FBSDKLoginManager().logInWithReadPermissions(permissions,
fromViewController: self) { result, error in
guard error == nil else { print("Login Error"); return }
guard result.grantedPermissions.contains("email") else {
print("No Email Permissions"); return }
self.getFBUserData()
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("loginSegue", sender: self)
}
}
}
Я был в состоянии получить следующий VC показ, делая вызывая мою функцию doLogin ниже. И там я создаю VC из раскадровки и представляю ее. Я считаю, что это связано с тем, что окно входа в систему Facebook появляется и закрывается. Я искал метод делегата, но ничего не нашел
@IBAction func onSignupPressed(sender: AnyObject) {
FBSDKLoginManager().logInWithReadPermissions(permissions,
fromViewController: self) { result, error in
guard error == nil else { print("Login Error"); return }
guard result.grantedPermissions.contains("email") else {
print("No Email Permissions"); return }
self.getFBUserData()
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("loginSegue", sender: self)
}
}
}
func getFBUserData(){
let params = "id, name, first_name, last_name, picture.type(large),friends, email, birthday, work, photos, education, location, hometown, religion, likes, about"
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields":params]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
//everything works print the user data
print(result)
let resultdict = result as? NSDictionary
self.user = Mapper<User>().map(result)
self.doLogin()
}
})
}
}
func doLogin() {
let successVC = self.storyboard?.instantiateViewControllerWithIdentifier("LoginSucessViewController")
self.presentViewController(successVC!, animated: true, completion: nil)
}
Просто, чтобы уточнить, что здесь не так. У вас есть метод 'prepareForSegue', где вы устанавливаете свойство на обозначении VC. (Я предполагаю, что свойство - это что-то, возвращаемое из этого вызова API графика). Затем вы указываете, что «это называется», предполагая, что вы имеете в виду вызов prepareForSegue? Показан ли успехVC? с неправильными или отсутствующими данными? или вообще не показано? Похоже, что 'performSegue' может быть вызван до возврата вашего GraphRequest. – JMFR
Я могу получить доступ только к моему успеху с помощью метода instantiatevc, который не вызывает prepareforsegue. И в результате моя собственность, которую я устанавливаю на моем пункте назначения, равна нулю – mparrish91