嗨,我有这个导航堆栈:
导航控制器-->
视图控制器
-->与后续VC
在最顶级的VC中,我有一个活动指示器,当用户单击“
使用Facebook登录
“然后希望在FBRequestConnection的闭包中关闭。FBRequestConnection是异步的,因此需要在闭包中关闭它。
以下方法不是从LoginVC本身调用的,因此我需要将其从导航堆栈中移除。我尝试过:
if let loginVC = UIApplication.sharedApplication().keyWindow?.rootViewController?.navigationController?.visibleViewController? as? LoginVC {
loginVC.turnOffActivityIndictator()
}
以及:
if let loginVC = UIApplication.sharedApplication().delegate?.window??.rootViewController as? LoginVC {
loginVC.turnOffActivityIndictator()
}
但它不起作用。我也尝试过其他建议,但无法找到解决方案。我该怎么解决这个问题,或者其他人有什么更好的主意吗?
XCode中的变量窗口看起来似乎一切正常,但if let语句只是跳过了后面的{},这意味着as?如果我是正确的,那就是失败?
以下是(不完整)方法:
private class func makeRequestForUserData() -> Void {
var dict = NSMutableDictionary()
FBRequestConnection.startForMeWithCompletionHandler({(connection, result, error) -> Void in
if (error == nil) {
// Success! Include your code to handle the results here
let resultDict = result as [String:AnyObject]
if let usersEmail = resultDict["email"] as? String {
if DBUser.loginUserForEmail(usersEmail) == true {
//Go to main menu
}else {
// no user exists.. alert message
// take then to sign up page
}
}else{
// error got nothing from the result dict!!
}
if let loginVC = UIApplication.sharedApplication().keyWindow?.rootViewController?.navigationController?.visibleViewController? as? LoginVC {
loginVC.turnOffActivityIndictator()
}
} else {
// An error occurred, we need to handle the error
// Check out our error handling guide: https://developers.facebook.com/docs/ios/errors/
FBErrorHandler.processError(error)
}
})
}