我有一个关于加速TableView的问题。 现在,我在cellForRowAt中编写以下代码。 但是,我想减轻重量以更快地处理它,您能给我建议吗?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell: BookListCell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(BookListCell.self), for: indexPath) as? BookListCell {
let book = books[indexPath.item]
cell.title.text = book.name
if let image = book.image {
cell.bookimage.kf.indicatorType = .activity
cell.bookimage.kf.setImage(with: URL(string: image))
}
if let price = book.price {
cell.price.text = String(price)
}
if let purchaseDate = book.purchaseDate {
cell.bookDay.text = purchaseDate
}
cell.editButton.setTitle(R.string.setting.editButton(), for: .normal)
return cell
}
let cell = UITableViewCell()
return cell
}
答案 0 :(得分:1)
做起来不太快,但是您可以肯定会变得更漂亮! :)
尝试共享逻辑并遵守SOLID原则。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell: BookListCell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(BookListCell.self), for: indexPath) as? BookListCell {
cell.configureWithBook(books[indexPath.item])
return cell
}
return UITableViewCell()
}
func configureWithBook(_ book: BookModel) {
title.text = book.name
if let image = book.image {
bookimage.kf.indicatorType = .activity
bookimage.kf.setImage(with: URL(string: image))
}
if let price = book.price {
price.text = String(price)
}
if let purchaseDate = book.purchaseDate {
bookDay.text = purchaseDate
}
editButton.setTitle(R.string.setting.editButton(), for: .normal)
}
此外,如果创建对象(例如UILabel),则应将其命名为yourNameLabel。类似于UIView-yourNameView。这是一条潜规则。
祝一切顺利! :)