强制刷新用户界面以更快地更改按钮的颜色和内容

罗比·威尔逊(Robbie Wilson)

我有以下代码从CloudKit获取数据,检查属性“ Completed”是否为false,如果是,则将其添加到taskCount。

在遍历所有任务之后,它将更新按钮的内容和颜色。

问题在于,在全部执行完代码之后,视图实际上需要花费几秒钟来更新,并且按钮上的数字以及颜色也会改变。

更新按钮的颜色和内容后,是否可以强制刷新或执行其他操作?

let taskManager = CloudKitTaskManager(database: CKContainer.defaultContainer().privateCloudDatabase)
    taskManager.getSummaryOfTasks {
        tasks in
        for index in 0...tasks.count-1 {
            if ("False" == tasks[index].completed){
                self.taskCount = self.taskCount + 1
            }
        }
        self.dueButton.setTitle(String(self.taskCount) + "\nOutstanding", forState: UIControlState.Normal)
        if (self.taskCount == 0) {
            self.dueButton.backgroundColor = UIColor(red:52/255, green:152/255, blue:219/255, alpha:1.0)
            self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        }else if(self.taskCount > 0 && self.taskCount <= 5){
            self.dueButton.backgroundColor = UIColor(red:243/255, green:156/255, blue:18/255, alpha:1.0)
            self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        }else if(self.taskCount > 5){
            self.dueButton.backgroundColor = UIColor(red:231/255, green:76/255, blue:60/255, alpha:1.0)
            self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        }

    }

感谢您的任何帮助。

iOSX

CloudKit方法的完成处理程序不能保证在主队列上运行,因此您必须像这样将与用户界面相关的代码分派给它:

let taskManager = CloudKitTaskManager(database: CKContainer.defaultContainer().privateCloudDatabase)
    taskManager.getSummaryOfTasks {
        tasks in
        for index in 0...tasks.count-1 {
            if ("False" == tasks[index].completed){
                self.taskCount = self.taskCount + 1
            }
        }
        dispatch_async(dispatch_get_main_queue()) {
            self.dueButton.setTitle(String(self.taskCount) + "\nOutstanding", forState: UIControlState.Normal)
            if (self.taskCount == 0) {
                self.dueButton.backgroundColor = UIColor(red:52/255, green:152/255, blue:219/255, alpha:1.0)
                self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
            }else if(self.taskCount > 0 && self.taskCount <= 5){
                self.dueButton.backgroundColor = UIColor(red:243/255, green:156/255, blue:18/255, alpha:1.0)
                self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
            }else if(self.taskCount > 5){
                self.dueButton.backgroundColor = UIColor(red:231/255, green:76/255, blue:60/255, alpha:1.0)
                self.dueButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
            }
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

4.6新用户界面如何更改按钮图像?

来自分类Dev

实时更新用户界面

来自分类Dev

$ scope。$ on不会更新用户界面

来自分类Dev

$ scope。$ on不会更新用户界面

来自分类Dev

即时更新用户界面

来自分类Dev

在新用户登录时刷新sectionTree

来自分类Dev

WPF如何刷新用户控件

来自分类Dev

Jsfiddle的新用户界面打破了我的角度和JavaScript的小提琴

来自分类Dev

用户名更改后在导航栏中刷新用户名(使用 Asp.Net、MVC 和 C#)

来自分类Dev

IdentityServer 3使用刷新令牌刷新用户

来自分类Dev

phpfox:更改新用户的隐私

来自分类Dev

WordPress:更改活动的新用户

来自分类Dev

新用户的权限已更改

来自分类Dev

如何更改新用户的默认壁纸?

来自分类Dev

对话框关闭后更新用户界面

来自分类Dev

在ReactJS中自动更新用户界面

来自分类Dev

什么时候可以安全更新用户界面?

来自分类Dev

无法在NSURLSession委托方法中更新用户界面

来自分类Dev

在线程内部使用runOnUiThread()更新用户界面

来自分类Dev

Android-使用异步更新用户界面

来自分类Dev

无法在NSURLSession委托方法中更新用户界面

来自分类Dev

Caliburn.Micro不更新用户界面

来自分类Dev

根据以前的更新动态更新用户界面

来自分类Dev

如何停止更新用户界面(通过服务)?

来自分类Dev

使用复选框实时更新用户界面

来自分类Dev

在 Django 管理界面中验证新用户密码

来自分类Dev

MAMP并创建新用户和MySQL

来自分类Dev

添加新用户和组

来自分类Dev

Google Api,当我拥有访问令牌和以前的刷新令牌时,如何刷新用户令牌