簡體   English   中英

UICollectionViewDelegate和UICollectionViewDataSource方法未調用

[英]UICollectionViewDelegate and UICollectionViewDataSource methods not called

我正在使用內部有UICollectionView UITableViewCell 使用此結構,一切都可以完美運行:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM