私はFacebookのプロフィール写真とSwiftのユーザーの名前でプロフィールを作成しようとしています。私はログインボタンがあるViewControllerでそれらを取得することができますが、私はそれらが必要なところのProfile ViewControllerに表示されません。ここで私が使用したコードは次のとおりです。ログインページのFacebookのプロフィールの画像が表示されないSwift
:ここ
import UIKit
class ViewController: UIViewController, FBSDKLoginButtonDelegate
{
@IBOutlet var btnFacebook: FBSDKLoginButton!
@IBOutlet var ivUserProfileImage: UIImageView!
@IBOutlet var lblName: UILabel!
override func viewDidLoad()
{
super.viewDidLoad()
configureFacebook()
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in
let strFirstName: String = (result.objectForKey("first_name") as? String)!
let strLastName: String = (result.objectForKey("last_name") as? String)!
let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)!
self.lblName.text = "Welcome, \(strFirstName) \(strLastName)"
self.ivUserProfileImage.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!)
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
let loginManager: FBSDKLoginManager = FBSDKLoginManager()
loginManager.logOut()
ivUserProfileImage.image = nil
lblName.text = ""
}
func configureFacebook()
{
btnFacebook.readPermissions = ["public_profile", "email", "user_friends"];
btnFacebook.delegate = self
}
}
は、プロファイルのViewControllerのためのコードは次のとおりです。
import UIKit
class Profile: UIViewController {
@IBOutlet weak var profilePicture: UIImageView!
@IBOutlet weak var userName: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in
let strFirstName: String = (result.objectForKey("first_name") as? String)!
let strLastName: String = (result.objectForKey("last_name") as? String)!
let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)!
self.userName.text = "Welcome, \(strFirstName) \(strLastName)"
self.profilePicture.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!)
}
}
}
}
私は私が最初の間のリンクが欠けていると思いますVCとプロフィールVCが、私は確信していません。
ご協力いただきありがとうございます。
で
**(loginButton:FBSDKLoginButton!didCompleteWithResult結果:FBSDKLoginManagerLoginResult!エラー:!NSError)**機能の両方でVC –
それはどちらかというと論理的に見えませんでしたが、プロファイルVCでstrPictureURLを呼び出すことができず、他のVCのAPIへの2回目の呼び出しを試みましたが、これは明らかに良い考えではありません。 – TheoF
** func prepareForSegue(送信者:AnyObject?)を使用して、ViewControllerからstrPictureURLをProfileVCに渡すことができます。 –