llectionViewDelegate和UICollectio

llectionViewDelegate和UICollectio

我正在处理内部有一个UITableViewCellUICollectionView。使用这种结构,一切都能完美工作:

class PostCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {}

但是,当我开始将UICollectionViewDelegate和UICollectionViewDataSource提取到另一个类时
class PostCell: UITableViewCell {
    @IBOutlet weak var collectionView: UICollectionView!

    public func populate(users: [User]) {
        UsersManager(users: users, collectionView: collectionView)
    }
}
public class UsersManager: NSObject, UICollectionViewDelegate, UICollectionViewDataSource {
    private var users: [User]!
    private var collectionView: UICollectionView!

    init(users: [User], collectionView: UICollectionView) {
        super.init()

        let nib = UINib(nibName: UserCell.IDENTIFIER, bundle:nil)
        collectionView.register(nib, forCellWithReuseIdentifier: UserCell.IDENTIFIER)
        collectionView.delegate = self
        collectionView.dataSource = self

        collectionView.reloadData()
    }
}

不调用委托方法。
collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
numberOfSections(in collectionView: UICollectionView) -> Int

我正在将collectionView传递给UsersManager()
我打电话给两个人:
collectionView.delegate = self
collectionView.dataSource = self

UsersManager()
你觉得这里有什么问题?

最佳答案

class PostCell: UITableViewCell {
    @IBOutlet weak var collectionView: UICollectionView!

    var usersManager:UsersManager?  // add this line.

    public func populate(users: [User]) {
        usersManager = UsersManager(users: users, collectionView: collectionView)
    }
}

10-05 21:46