静态成员 rx 不能在实例类型 UICollectionView 上使用

Posted

技术标签:

【中文标题】静态成员 rx 不能在实例类型 UICollectionView 上使用【英文标题】:Static member rx cannot be using on instance type UICollectionView 【发布时间】:2021-10-14 09:40:29 【问题描述】:

所以我开始学习 rxCocoa,并尝试将其实现到 collectionview 中, 我认为 tableview 没有问题,它应该对 collectionView 做同样的事情 但不知何故出现了这个错误。

那么究竟如何使用 rx bind 呢?以及为什么会出现错误

谢谢

我的视图控制器

final class ViewController: UIViewController 
    var presenter:HomePresenter?
    private lazy var collectionView:UICollectionView = 
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .vertical
        layout.minimumLineSpacing = 1
        layout.minimumInteritemSpacing = 1
        layout.itemSize = CGSize(width: (view.bounds.width/2)-2, height: 370)
        let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
        collectionView.backgroundColor = .white
        return collectionView
    ()
    override func viewDidLoad() 
        super.viewDidLoad()

// THIS IS WHERE THE ERROR STARTS
        presenter?.getProductList().bind(to: collectionView.rx.items(cellIdentifier: ProductCollectionViewCell.identifier, cellType: ProductCollectionViewCell.self)a,b,c in
            
        ).dispose(by:disposeBag)
     



我的主持人

    func getProductList() -> Observable<[ProductEntity]> 
        return self.interactor.getProductList()
    

【问题讨论】:

我没有看到static。导致错误的行到底在哪里? 在presenter?.getProductLine,在viewdidload里面 我没有使用任何静态类型,除了单元格标识符,但它通常可以工作 【参考方案1】:

你的括号放错地方了...

presenter?
    .getProductList()
    .bind(to: collectionView.rx.items(cellIdentifier: ProductCollectionViewCell.identifier, cellType: ProductCollectionViewCell.self))  a, b, c in // two close parens here

     // no close paren here
    .disposed(by: disposeBag)

【讨论】:

以上是关于静态成员 rx 不能在实例类型 UICollectionView 上使用的主要内容,如果未能解决你的问题,请参考以下文章

静态类函数:实例成员不能用于类型

错误:静态成员 copyWithZone 不能用于 UIImageView 类型的实例

内部类

继承中静态方法不能被重写

14类的静态成员和实例成员

c# 静态成员和实例成员的区别