У меня проблема при прокрутке в tableView.Я реализовал закладку в проекте, и все работает отлично, кроме прокрутки.Когда он запускается в первый раз, он вызывает API, чтобы проверить, добавлен ли элемент в закладки или нет.Если в закладки, показать, что он отображает заполненное изображение, если нет, отображает не заполненное изображение.Он отлично работает, когда он загружается, в первый раз, но при прокрутке кнопки закладки изображение меняется.
Я пытался использовать prepareForReuse в CustomTableViewCell для решения проблемы, а также отображать изображение кнопки только в cellforRow, но не сработало.
Вот MainViewController:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let itemCell = tableView.dequeueReusableCell(withIdentifier: "NewPodcastTableViewCell", for: indexPath) as! NewPodcastTableViewCell
let allMaterial = materials[indexPath.row]
itemCell.setMaterials(materials: allMaterial)
itemCell.delegate = self
return itemCell
}
extension BrowseViewController: ViewBookmarkedDelegate {
func setBookmark( refId: String, isBookmarking: Bool, refType: String, refSubType: String) {
let query = SetBookmarkMutation(refId: refId, refType: "material", isBookmarking: true, refSubType: refSubType)
Apollo.shared.client.perform(mutation: query ) { results, error in
if var bookmarked = results?.data?.bookmark {
print(refId,bookmarked,"onUnbookmark")
} else if let error = error {
print("Error loading data \(error)")
}
}
}
func setUnbookmark(refId: String, isBookmarking: Bool, refType: String, refSubType: String) {
let query = SetBookmarkMutation(refId: refId, refType: "material", isBookmarking: false, refSubType: refSubType)
Apollo.shared.client.perform(mutation: query ) { results, error in
if var bookmarked = results?.data?.bookmark {
print(refId,bookmarked,"onUnbookmark")
} else if let error = error {
print("Error loading data \(error)")
}
}
}
}
А вот и CustomTableViewCell
protocol ViewBookmarkedDelegate {
func setBookmark( refId: String, isBookmarking: Bool, refType: String, refSubType: String)
func setUnbookmark( refId: String, isBookmarking: Bool, refType: String, refSubType: String)
}
var delegate: ViewBookmarkedDelegate?
@IBOutlet weak var bookmarkButton: UIButton!
@IBAction func bookmarkButtonTapped(_ sender: UIButton) {
if (self.materials?.fragments.materialFields.bookmark?.bookmarked == false){
self.bookmarkButton.setImage(#imageLiteral(resourceName: "bookmarkEmpty"), for: .normal)
} else if (self.materials?.fragments.materialFields.bookmark?.bookmarked == true) {
self.bookmarkButton.setImage(#imageLiteral(resourceName: "Bookmark Filled"), for: .normal)
}
func setMaterials(materials: GetMaterialsByTypeQuery.Data.AllMaterial) {
self.materials = materials
}
override func prepareForReuse() {
super.prepareForReuse()
self.bookmarkButton.setImage(nil, for: .normal)
}
Есть идеи, как решить проблему?
Заранее спасибо.