gpt4 book ai didi

swift - 从嵌套的帮助类访问 ProgressView

转载 作者:行者123 更新时间:2023-11-28 08:23:21 25 4
gpt4 key购买 nike

我对嵌套类等有疑问。我有一个 UIView 正在处理将 JSON 数据下载到设备上,并且我有一个显示用户进度的进度条。因为我必须等待整个下载完成才能继续,所以我实现了一个辅助类,这样我就可以使用尾随闭包 ( found here )

任何人,这里是代码:

在我看来DidLoad

@IBOutlet weak var ProgressBar: UIProgressView!

override func viewDidLoad() {
super.viewDidLoad()

ProgressBar.setProgress(0.10, animated: true)

updateCoreStack.needsCMS = true
updateCoreStack.needsSOC = true
updateCoreStack.needsDIN = true
updateCoreStack.progress = ProgressBar
updateCoreStack.beginUpdate{ completion in
//fires when all updates return!
print(completion)
}

}

现在是辅助类:

...
let updateCoreStack = uCoreStack()
class uCoreStack {
var progress:UIProgressView? = nil

var needsCMS = false
var needsDIN = false
var needsSOC = false

func beginUpdate(complete: @escaping (String)->()) {
...
self.progress?.setProgress((self.progress?.progress)! + 0.05, animated: true)
...
}
}

可能值得注意的是,beginUpdate 可能被调用不止一次,即,在正常使用中,beginUpdate 可能被激活 3 次。 (如果这真的很重要......)

通过此实现,每次 progressBar 更改时我都会收到以下错误:

2016-11-21 23:50:34.799607 DemoApp[779:241618] This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.

Stack:(

0 CoreFoundation 0x000000018505c1d8 + 148

1 libobjc.A.dylib 0x0000000183a9455c objc_exception_throw + 56

2 CoreFoundation 0x000000018505c108 + 0

3 Foundation 0x0000000185c40f0c + 192

4 Foundation 0x0000000185c40c4c + 76

5 Foundation 0x0000000185a8c5dc + 112

6 Foundation 0x0000000185c3f8e8 + 112

7 UIKit 0x000000018aeb5ea0 + 244

8 UIKit 0x000000018aed9d78 + 660

9 UIKit 0x000000018aef0b84 + 108

10 UIKit 0x000000018b3cd7d8 + 276

11 DemoApp 0x0000000100122f70 )

有什么想法或提示吗?提前谢谢你。

碰撞...

最佳答案

您似乎在另一个线程上工作,然后尝试更新状态。任何 View 更新都需要在主线程上发生。这是一个如何做到这一点的例子:Updating the UI Using Dispatch_Async in Swift

关于swift - 从嵌套的帮助类访问 ProgressView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734302/

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