1

我是第一次尝试 IGListKit,但我似乎很早就遇到了障碍

lazy var collectionView: UICollectionView = {
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    collectionView.backgroundColor = .white
    return collectionView
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.addSubview(self.collectionView)

    let updater = ListAdapterUpdater()
    let adapter = ListAdapter(updater: updater, viewController: self, workingRangeSize: 0)
    adapter.collectionView = self.collectionView

    adapter.dataSource = self
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    collectionView.frame = view.bounds
}

extension SocialViewController: ListAdapterDataSource {

func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
    // this can be anything!
    return [ "Foo" as ListDiffable, "Bar" as ListDiffable]
}

func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController {
    return TopNewsSectionController()
}

func emptyView(for listAdapter: ListAdapter) -> UIView? {
    return UIImageView(image: UIImage(named: "swords"))
}

}

类 TopNewsSectionController: ListSectionController {

override func sizeForItem(at index: Int) -> CGSize {
    return CGSize(width: collectionContext!.containerSize.width, height: 55)
}

override func cellForItem(at index: Int) -> UICollectionViewCell {
    return collectionContext!.dequeueReusableCell(of: TopNewsCollectionViewCell.self, for: self, at: index)
}

}

但是我的 cellForItem 或 sizeForItem 都没有被称为我做错了什么?

4

3 回答 3

1

尝试将适配器声明为类属性而不是方法属性,

    let updater = ListAdapterUpdater()
    let adapter = ListAdapter(updater: updater, viewController: self, workingRangeSize: 0)
    adapter.collectionView = self.collectionView

    lazy var adapter: ListAdapter = {
        return ListAdapter(updater: ListAdapterUpdater(), viewController: self, workingRangeSize: 0)
    }()
于 2019-04-07T08:18:24.350 回答
0

调用adapter.performUpdatesAnimatedadapter.reloadDataWithCompletion(首次加载)更新

于 2018-08-22T11:31:34.623 回答
0

您的adapter对象在viewDidLoad返回时被销毁。尝试将其声明为您的ViewController.

于 2021-04-11T16:29:18.650 回答