我希望进度条读取数组中的completed是否有completed值,如果完成时有删除线,进度条也将更改
抱歉,我可能不太清楚,但我想如下
这是我的密码
class ListTableViewController: UITableViewController {
@IBOutlet weak var progressView: UIProgressView!
var progress: Float {
if item.lists.count > 0 {
return Float(item.lists.filter({$0.completed}).count) / Float(item.lists.count)
} else {
return 0
}
}
var item: ItemCard! {
didSet {
if let progressView = progressView {
// it's not work
progressView.setProgress(progress, animated: true)
}
}
}
这是我的数据。ItemCard中有lists=列表。我想在列表中完成作为进度条的显示。
class ItemCard: NSObject, Codable {
var title: String
var isFinish: Bool
var lists = [List]()
init(title: String, isFinish: Bool) {
self.title = title
self.isFinish = false
super.init()
}
}
class List: NSObject, Codable {
var name: String
var completed:Bool
init(name:String, completed:Bool) {
self.name = name
self.completed = completed
}
}
我对项变量使用了didSet,但它无效
最佳答案
每次你有一个新的ItemCard
,计算完成列表的数量,除以列表的数量并更新进度。
应该看起来像这样。
var item: ItemCard! {
didSet {
let completedListsCount = self.item.lists.map { $0.completed }
.filter { $0 }
.count
let progress = Double(completedLists.count / self.item.lists.count)
progressView.setProgress(progress, animated: true)
}
}