Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Facebook LoginManager回调/PrepareforSegue Swift_Ios_Swift_Facebook Graph Api - Fatal编程技术网

Ios Facebook LoginManager回调/PrepareforSegue Swift

Ios Facebook LoginManager回调/PrepareforSegue Swift,ios,swift,facebook-graph-api,Ios,Swift,Facebook Graph Api,我正在尝试使用prepareforSegue将一个属性传递给我的下一个VC。它被调用,但是我的另一个VC没有加载 原创的 @IBAction func onSignupPressed(sender: AnyObject) { FBSDKLoginManager().logInWithReadPermissions(permissions, fromViewController: self) { result, error in guard error == nil els

我正在尝试使用prepareforSegue将一个属性传递给我的下一个VC。它被调用,但是我的另一个VC没有加载

原创的

@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)
        }
    }
}
通过调用下面的doLogin函数,我已经能够获得下一个VC演示。在那里,我从故事板中实例化了一个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)
          }
@iAction func onSignuppress(发送方:AnyObject){
FBSDKLoginManager().logInWithReadPermissions(权限,
fromViewController:self){结果,错误在
guard error==nil else{print(“登录错误”);return}
guard result.grantedPermissions.contains(“电子邮件”)else{
打印(“无电子邮件权限”);返回}
self.getFBUserData()
dispatch\u async(dispatch\u get\u main\u queue()){
self.performsguewithidentifier(“登录”,发件人:self)
}
}
}
func getFBUserData(){
let params=“id,name,first\u name,last\u name,picture.type(大),朋友,电子邮件,生日,工作,照片,教育,地点,家乡,宗教,爱好,关于”
if((FBSDKAccessToken.currentAccessToken())!=nil){
FBSDKGraphRequest(graphPath:“me”,参数:[“fields”:params])。startWithCompletionHandler({(连接、结果、错误)->中的Void
如果(错误==nil){
//一切都可以打印用户数据
打印(结果)
让ResultDisct=结果作为NSDictionary
self.user=Mapper().map(结果)
self.doLogin()
}
}) 
}
}
func-doLogin(){
让successVC=self.storyboard?.instanceeviewcontrollerwhiteIdentifier(“登录访问视图控制器”)
self.presentViewController(successVC!,动画:true,完成:nil)
}

非常愚蠢的错误!没有意识到我可以简单地设置实例化VC的属性

func doLogin() {

        let successVC = self.storyboard?.instantiateViewControllerWithIdentifier("LoginSucessViewController") as! LoginSucessViewController
        successVC.currentUser = user
        self.presentViewController(successVC, animated: true, completion: nil)
}

只是想澄清这里出了什么问题。您有一个
prepareforsgue
方法,在该方法中,您将在指定VC上设置一个属性。(我猜这个属性是从这个graph API调用返回的)。接下来你说“它被调用了”,猜你是说prepareForSegue被调用了?是否显示了successVC?有错误或没有数据?还是根本不显示?看起来在GraphRequest返回之前可能会调用
performsgue
。我只能使用不调用PrepareForsgue的实例化EVC方法访问successVC。因此,我在目标VC上设置的属性为零