未调用UICollectionViewDelegate和UICollectionViewDataSource方法

时间:2017-01-21 11:09:45

标签: ios swift uicollectionview

我正在使用内置UITableViewCell的{​​{1}}。使用这种结构,一切都很完美:

UICollectionView

但是,当我开始将UICollectionViewDelegate和UICollectionViewDataSource提取到另一个类时

class PostCell: UITableViewCell, 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(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int numberOfSections(in collectionView: UICollectionView) -> Int 。 我同时打电话给:

UsersManager()
collectionView.delegate = self collectionView.dataSource = self

中的

您认为这里的问题是什么?

1 个答案:

答案 0 :(得分:1)

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)
    }
}