我正在处理内部有一个UITableViewCell
的UICollectionView
。使用这种结构,一切都能完美工作:
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)
}
}