IGListKit - Как добавить ячейку, когда в модели представления есть значение, а не добавить, когда ее нет? - PullRequest
0 голосов
/ 28 января 2020

Как добавить ячейку, когда в модели представления есть значение, а не добавить, если ее нет? Я имею в виду, что я использую ListBindingSectionController и для каждого типа ячеек (изображение, подпись и т. Д. c) у меня есть отдельный класс ViewModel. Сообщения будут иметь изображения, но не могут иметь подписи. У меня вопрос: как я могу добавить ячейку с заголовком, когда есть заголовок в сообщении, и не добавлять ее, когда нет заголовка?

Мой класс ViewModel с заголовком:

import Foundation
import IGListKit

final class CaptionViewModel: ListDiffable {

  let fullName: String
  let caption: String? // can be nil(empty). When it is empty, I don't want caption cell inserted.


  init(fullName: String, caption: String?) {
    self.fullName = fullName
    if caption != nil {
      self.caption = caption
    } else {
      self.caption = " "
    }
  }

  //MARK: ListDiffable
  func diffIdentifier() -> NSObjectProtocol {
    return "caption" as NSObjectProtocol
  }

  func isEqual(toDiffableObject object: ListDiffable?) -> Bool {
    // not completed
    return false
  }
}

1 Ответ

0 голосов
/ 28 января 2020

Это определение должно происходить в функции objectsForListAdapter. В objectsForListAdapter это должно выглядеть примерно так:

func objectsForListAdapter(listAdapter: ListAdapter) -> [ListDiffable] {
  var objects = []
  // ...snip...
  if captionViewModel.caption != nil {
      object.append(captionViewModel)
  }
  // ...snip...
  return objects
}
...