【问题标题】:Make UI changes mid function in swift在 swift 中使 UI 更改中间功能
【发布时间】:2015-02-26 04:56:19
【问题描述】:

我正在尝试制作一个 UIViewcontroller,在其中为我的应用程序更新一些文件。我试图显示更新的进度,但似乎当我更新并对某些 IBOutlets 进行更改时,它们实际上不会改变外观,直到我的功能完成。有人可以帮我吗? 这是我的 Update() 函数的一部分

for person in allContacts {
        if person.pictureName != "#" {
            infoLabel.text = "Downloading picture of " + person.name
            person.picture = DBManager.downloadPicture(person.pictureName)
            infoLabel.text = "Saving picture of " + person.name
            DBManager.savePicture(person.picture, pictureName: person.pictureName)
        }

        progressBar.progress += oneProgressBarFragment
    }

进度条不会更新,直到它到达 Update() 函数的末尾,然后它显示它已 100% 完成。有什么方法可以重绘 UI,以便在每张图片下载后更新进度条?

【问题讨论】:

  • 您正在做两件非常错误的事情之一。您要么在主线程上同步执行耗时(下载)代码,要么从后台线程与接口对话。无论哪种方式,您都有一个主要的线程问题。你需要在这里重新考虑你的整个方法。
  • @matt 我正在主线程上执行耗时的任务。你会怎么做呢?感谢您的回复顺便说一句:)
  • 我会学习如何正确下载东西,即异步下载。好吧,其实,我知道如何正确下载东西。我是说应该学会正确下载东西。 :)
  • 问题是,您依赖于一些名为 DBManager 的第三方隐藏类。我不知道那是什么,也不知道它是否可以异步使用。所以我不能给你细节,除了告诉你我会做什么,那就是使用 NSURLSession - 异步。
  • @matt 谢谢我明白了:)

标签: ios xcode user-interface swift reload


【解决方案1】:

应该异步进行下载,并有一些其他的方法来检查进度。

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多