gpt4 book ai didi

ios - 如何设置 UIActivityIndi​​cator 异步

转载 作者:行者123 更新时间:2023-11-28 10:20:13 25 4
gpt4 key购买 nike

我在使用 Firebase 执行用户身份验证任务期间尝试创建旋转事件指示器时遇到了一个非常普遍的问题

我尝试使用 CGD dispatch_async,但这似乎无法解决我的问题。这是我的代码

    @IBAction func SignMeIn(sender: AnyObject) {
ActivityIndicator.hidden = false
ActivityIndicator.startAnimating()



dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
NSLog("Before login func")
self.logIn()

dispatch_async(dispatch_get_main_queue(), { () -> Void in
NSLog("After login func")
self.ActivityIndicator.stopAnimating()
self.ActivityIndicator.hidden = true
})

});
}

func logIn(){
myRootRef.authUser(TXT_User.text, password: TXT_Password.text,
withCompletionBlock: { error, authData in
if error != nil {
NSLog(error.debugDescription)
} else {
NSLog("Connected !")
}
})


}

问题是我肯定做错了什么,因为在 Debug模式下按以下顺序出现:

"Before login func"
"After login func"
"Connected !"

虽然我应该有

"Before login func"
"Connected !"
"After login func"

请问我做错了什么?非常感谢您的帮助:)!

最佳答案

你的问题是你有 2 个异步任务 1.登录完成 block 2.事件指示灯停止

如果你想在登录过程后停止事件指示器,你应该像这样移动完成 block 中的代码

@IBAction func SignMeIn(sender: AnyObject) {
ActivityIndicator.hidden = false
ActivityIndicator.startAnimating()

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
NSLog("Before login func")
self.logIn()
});
}

func logIn(){
myRootRef.authUser(TXT_User.text, password: TXT_Password.text,
withCompletionBlock: { error, authData in
if error != nil {
NSLog(error.debugDescription)
} else {
NSLog("Connected !")
}

dispatch_async(dispatch_get_main_queue(), { () -> Void in
NSLog("After login func")
self.ActivityIndicator.stopAnimating()
self.ActivityIndicator.hidden = true
})
})
}

关于ios - 如何设置 UIActivityIndi​​cator 异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com