我有以下代码从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)
}
}
感谢您的任何帮助。
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] 删除。
我来说两句