因此,关于我在做什么的一般见解是实现登录和注销到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
的实际对象,而不要创建新对象。