gpt4 book ai didi

ios - 如何在 Xcode 8、swift 3 中将 Facebook 值发送到下一个屏幕

转载 作者:行者123 更新时间:2023-11-30 12:38:29 24 4
gpt4 key购买 nike

我正在整理一系列注册页面,首先向用户显示一个“使用 Facebook 创建帐户”按钮,用于登录,然后向他们显示一个充满空文本框的基本注册页面。但是,我尝试使用从图形请求收集的用户值填充其中一些文本框。

这是带有注册按钮的第一个屏幕:

import UIKit
import FBSDKLoginKit

class RegisterVC: UIViewController, FBSDKLoginButtonDelegate {
var fbLoginSuccess = false

var fbName:String!
var fbEmail:String!

override func viewDidLoad() {
super.viewDidLoad()

let loginButton = FBSDKLoginButton()
view.addSubview(loginButton)
loginButton.frame = CGRect(x: 82, y: 325, width: view.frame.width - 210, height: 59)

loginButton.delegate = self
}

func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("Did log out of facebook")
}

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
return
}
print("Successfully logged in")

FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start {(connection, result, err) in
if err != nil {
print("Failed to start graph request", err)
return
} else {

guard let data = result as? [String:Any] else {return}

let fbEmail = data["email"]
let fbName = data["name"]

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? CreateAccountVC
vc!.email.text = self.fbEmail
vc!.fullname.text = self.fbName
}

}

print(result)
}

performSegue(withIdentifier: "regSegue", sender: RegisterVC.self)
}

这些是下一个屏幕上的文本框:

import UIKit

class CreateAccountVC: UIViewController {
@IBOutlet weak var fullname: UITextField!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var age: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var verifyEmail: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var verifyPassword: UITextField!

上面的所有代码都向我展示了注册页面,但文本框是空的并且没有填充 Facebook 数据。我不是一个出色的编码员,但帮助确实很有用。如果您有任何解决方案,请告诉我!谢谢。

最佳答案

此代码片段中存在问题:

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? CreateAccountVC
vc!.email.text = self.fbEmail
vc!.fullname.text = self.fbName


当此处更新其 .text 属性时,CreateAccountVC 的文本字段尚未创建,此时文本字段为 nil .
评估将从 Graph API 检索的 String 对象直接传递给 CreateAccountVC,然后使用它们更新文本字段。

考虑将现有的实现改为以下几行:

class CreateAccountVC: UIViewController {
var fbName:String!
var fbEmail:String!
@IBOutlet weak var fullname: UITextField!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var age: UITextField!
...

上面提到的代码片段将更改为:

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? CreateAccountVC
vc!.fbName = self.fbName
vc!.fbEmail = self.fbEmail
...

关于ios - 如何在 Xcode 8、swift 3 中将 Facebook 值发送到下一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com