Простой вопрос. Если я нахожусь в блоке завершения - например, facebook login с использованием firebase ... и логин преуспел. Если я хочу отклонить текущий контроллер представления (контроллер просмотра входа) из блока завершения, мне нужно вернуться в основную очередь, чтобы сделать это. Я предполагаю, что блок завершения входа выполняется в фоновом потоке, и любое изменение в пользовательском интерфейсе (т. Е. Увольнение текущего контроллера представления) должно выполняться в основном потоке ... что лучше всего здесь ... или я чего-то не хватает ?Swift - отклонение контроллера просмотра из блока завершения
@IBAction func facebookLoginTapped(sender: AnyObject) {
//
let ref = Firebase(url: "https://XXXX.firebaseio.com")
let facebookLogin = FBSDKLoginManager()
facebookLogin.logInWithReadPermissions(["email"], fromViewController: self, handler: { (facebookResult, facebookError) -> Void in
if facebookError != nil {
print("Facebook login failed. Error \(facebookError)")
} else if facebookResult.isCancelled {
print("Facebook login was cancelled.")
} else {
//successfully logged in
//get facbook access token
let accessToken = FBSDKAccessToken.currentAccessToken().tokenString
//use access token to authenticate with firebase
ref.authWithOAuthProvider("facebook", token: accessToken,
withCompletionBlock: { error, authData in
if error != nil {
print("Login failed. \(error)")
} else {
//authData contains
print("Logged in! \(authData)")
//pop loginvc back to uservc - DO I NEED TO GET MAIN THREAD HERE BEFORE DISMISSING VIEW CONTROLLER
self.dismissViewControllerAnimated(true, completion: nil)
}
})
}
})
}
Тот же вопрос, как мой ответ about performSegue: http://stackoverflow.com/questions/32292600/swift-performseguewithidentifier-not-working/32 292706 # 32292706 – BaseZen
Вы должны сделать это на главной теме. – ryantxr