使用在迷你iPad OS 12.1.1上运行应用程序的Xcode 10.1
我正在将通知发布到NotificationCenter,并且处理程序功能更新了UILabel setupProgress
,以显示数据导入的进度。
这曾经可以正常工作,但最近已经停止工作了,这很可能是由于我做了一些事情,但我不知道该怎么办。
代码中的 PM
是一个打印到控制台的函数-它告诉我self.setupProgress.text
实际上已正确设置并随数据加载而按预期更改,但是相应的UILabel不会更新。
初始UILabel文本设置如下
if !self.update_type.isEmpty && self.update_type == "setup_import" {
self.setupProgress.text = "I've told the server that this is a clean install"
}
并可以正常工作-但是随后,随着导入的进行,在处理程序函数(如下所示)中,我没有更新,直到
import_progress == "And now the end is upon us ..."
此时UILabel会正确更新,一切都会按预期进行。
func handleImportNotification(_ notification:Notification) {
self.setupProgress.text = import_progress
// should show something like
// `Importing F4RES : 0 of : 1395`
// `Importing F4RES : 500 of : 1395`
// etc...
PM(#line, function: #function, str1: self.setupProgress.text)
// prints the correct updates to the console
if import_progress == "And now the end is upon us ..." {
self.makeShopOptions()
self.loadingImage.stopAnimating()
self.performSegue(withIdentifier: "setup_to_splash", sender: self)
}
}
该应用程序仍然可以正常运行-中间没有预期的UILabel更新。
提前感谢任何想法。
答案 0 :(得分:0)
您正在将通知发布到通知中心。您介意显示方式和时间吗?
假设您使用的是NotificationCenter.default.post notificationName:
方法,则处理程序应采用Notification
类型的参数。否则,它将不会响应通知更新。
处理程序函数应如下所示:
func handleImportNotification(notification: Notification) { ... }
观察者:
var observer: NSObjectProtocol?
func someFunction() {
observer = NotificationCenter.default.addObserver(forName: object: queue: using: { (Notification) in
//Update UILabel or call the associated function
}))
}
尝试一下。
答案 1 :(得分:-1)
对不起-这是我的第一篇SO文章,没有(应该是我的头脑,也因此是你的头脑)不清楚。原来与NotificationCenter
无关。
这是一个线程问题-我仍在搜索。
感谢您的努力:)