我正在使用内置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
中的
您认为这里的问题是什么?
答案 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)
}
}