如何解决在 viewWillDisappear 上显示 SVProgressHUD
上下文:我的 UIViewController
正在显示一个编辑个人资料视图,其中有几个 UITextField
(名字、姓氏、生日……)。没有“保存按钮”,只要调用 textFieldDidEndEditing
,数据库上的值就会更新。
如果用户尝试在所有数据库更新完成之前离开 UIViewController
,我想显示加载视图(我使用的是 SVProgressHUD 库)。
这是我的代码(如果 updateWaitingConfirm 为空,则表示所有更新都已完成):
override func viewWilldisappear(_ animated: Bool) {
if !updateWaitingConfirm.isEmpty {
self.showSVProgressHUD(message: NSLocalizedString("updateWaiting",comment: ""))
timetoWaitCount = 0
let group = dispatchGroup()
group.enter()
checkWaitingConfirmEmpty(group)
group.wait()
self.dismissSVProgressHUD()
}
super.viewWilldisappear(animated)
}
func checkWaitingConfirmEmpty(_ group: dispatchGroup) {
dispatchQueue.global(qos: .default).asyncAfter(deadline: .Now() + 0.5) {
self.timetoWaitCount += 0.5
if self.updateWaitingConfirm.isEmpty || self.timetoWaitCount > self.maxTimetoWaitForUpdates {
group.leave()
} else {
self.checkWaitingConfirmEmpty(group)
}
}
}
当所有更新完成后(或超过 maxTimetoWaitForUpdates(10 秒)),group.leave()
被调用,然后我调用我的函数来关闭 HUD 并调用 super.viewWilldisappear()
问题是我的视图中没有显示任何内容,例如我还尝试编辑文本字段,但它也不起作用。
我还尝试在 showSVProgressHUD 之后调用 view.layoutIfNeeded()
,但它不起作用。
很高兴知道:我不能只在我的后退按钮 touchUpInside
方法上调用一个方法,因为用户也可以使用 UIViewController
退出 interactivePopGestureRecognizer
。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。