因此,关于我在做什么的一般见解是实现登录和注销到Facebook并检索个人资料图片,名称,ID。

登录过程和检索信息正常,但是我的问题出在我尝试注销时。我主要有一个带有注销按钮的ExploreViewController,而MeViewController是我要调用的函数,用于将显示信息的标签设置为其他内容

ExploreViewController:

@IBOutlet weak var LogoutButton: UIButton!

@IBAction func LogoutButtonClicked(sender: AnyObject!)

{
    let me = MeViewController()
    me.releseObjects()

}


iam成功调用IBAction

MeViewController:

@IBOutlet weak var idlable: UILabel!
@IBOutlet weak var firstName: UILabel!
@IBOutlet weak var imgProfile: UIImageView!

override func viewDidLoad() {

    super.viewDidLoad()




    if((FBSDKAccessToken.currentAccessToken()) != nil)
    {
        let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"name,id,email"])
        graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in


            if ((error) != nil)
            {

            }
            else
            {

                let userName : NSString = result.valueForKey("name") as! NSString
                let userid : NSString = result.valueForKey("id") as! NSString
                self.firstName.text=userName as String
                self.idlable.text=userid as String


                let accessToken = FBSDKAccessToken.currentAccessToken().tokenString
                let url = NSURL(string: "https://graph.facebook.com/me/picture?type=large&return_ssl_resources=1&access_token="+accessToken)
                _ = NSURLRequest(URL: url!)
                let data=NSData(contentsOfURL: url!)

                    // Display the imag
                    let image = UIImage(data: data!)
                    self.imgProfile.image = image
            }
        })
    }


 func releseObjects(){

    let fn = "lolololol"

    self.firstName.text = fn //getting the error here
   }


我成功地将firstName标签设置为我在viewDidLoad()中从Facebook获得的用户名,我的问题是,当我调用函数releaseObjects()时,我无法更改标签的内容

最佳答案

问题是您正在从MeViewController创建ExploreViewController的新实例并尝试调用该releseObjects方法:

let me = MeViewController()
me.releseObjects()


这是一个新对象,而不是您以前使用的对象。由于未显示,因此插座未连接(为零)。当您尝试访问firstName标签时,它肯定会崩溃。

我建议您重用MeViewController的实际对象,而不要创建新对象。

09-30 18:06