Привет У меня есть этот навигационный стек:Как правильно получить самый верхний вид контроллера и брось
NavigationController ->ViewController -> с последующим VCs
В самом верхнем 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 просто пропускает конечный {}, что означает, что как? терпит неудачу, если я прав?
Вот (неполный) метод:
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)
}
})
}
Угу .. хорошую работу она работала. Большое спасибо. –