我有一个有4个标签的UITabController。在其中一个选项卡上,我有一个uitableviewcontroller,它托管包含UILabel的单元格(此UILabel名为' dataCount),它将显示在核心数据上找到的实体中的项目数和仅显示名称的UILabel(这个UILabel被命名为“nameLabel'”。我试图在显示选项卡时,在核心数据中搜索与单元格 nameLabel 同名的属性,一旦找到,我只需使用一些业务逻辑从核心数据中获取数据然后插入我在 dataCount UILabel中找到的项目数。这是有效的,但是无论何时访问选项卡,都会在UITableViewCell上不断更新这些数据。任何人都可以告诉我如何能够始终从核心数据中获取数据,并在访问该特定选项卡时将其显示在单元格上的UILabel上?一些有效但不可行的东西正在重新加载willDisplayCell上的tableview。这样做只会持续增加CPU。
我的尝试:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
// Search for number of notes
var notesFetchRequest = NSFetchRequest(entityName: "Notes")
var numberOfNotes = managedObjectContext.executeFetchRequest(notesFetchRequest, error: nil) as? [NSManagedObject]
var notesCount = 0
if let notes = numberOfNotes {
for items in notes as! [Notes] {
if items.name == (cell as! MyCell).nameLabel.text!{
notesCount += 1
}
}
}
(cell as! MyCell).dataCount.text = String(notesCount)
//self.mytableview.reloadData() -- works but CPU increases exponentially
}
答案 0 :(得分:0)
似乎当我在 viewDidAppear 上重新加载tableview时,数据会正确显示和更新。问题解决了。如果有人在优化和可行性方面有任何其他建议,请告诉我。
override func viewDidAppear(animated: Bool) {
self.mytableview.reloadData()
}