如何从另一个类执行 collectionView 方法?
Posted
技术标签:
【中文标题】如何从另一个类执行 collectionView 方法?【英文标题】:How can I execute the collectionView methods of a class from another one? 【发布时间】:2019-09-13 20:10:57 【问题描述】:我有我的类 CardSensors,它有一个 collectionView,里面装满了另一个 XIB
class CardSensors: UIView
@IBOutlet weak var botName: UILabel!
@IBOutlet weak var sensorsCollectionView: UICollectionView!
var sensors = [[String: Any]]()
var viewModel: NewsFeedViewModel!
didSet
setUpView()
func setSensors(sensors: [[String: Any]])
self.sensors = sensors
static func loadFromNib() -> CardSensors
return Bundle.main.loadNibNamed("CardSensor", owner: nil, options: nil)?.first as! CardSensors
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
func setupCollectionView()
let nibName = UINib(nibName: "SensorCollectionViewCell", bundle: Bundle.main)
sensorsCollectionView.register(nibName, forCellWithReuseIdentifier: "SensorCollectionViewCell")
func setUpView()
botName.text = viewModel.botName
extension CardSensors: UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "SensorCollectionViewCell", for: indexPath) as? SensorCell else
return UICollectionViewCell()
cell.dateLabel.text = sensors[indexPath.row]["created_at"] as? String
cell.sensorType.text = sensors[indexPath.row]["type"] as? String
cell.sensorValue.text = sensors[indexPath.row]["value"] as? String
cell.sensorImage.image = UIImage(named: (sensors[indexPath.row]["type"] as? String)!)
return cell
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return sensors.count
我正在像这样的另一个类中创建一个对象,但我希望它调用 collectionView 的方法以加载信息。
let sensorView = CardSensors.loadFromNib()
sensorView.sensors = sensores
sensorView.setupCollectionView()
问题是 collectionView 方法永远不会被调用。我该怎么做才能从我的其他班级给他们打电话?
【问题讨论】:
【参考方案1】:你需要设置数据源
sensorsCollectionView.register(nibName, forCellWithReuseIdentifier: "SensorCollectionViewCell")
sensorsCollectionView.dataSource = self
sensorsCollectionView.reloadData()
然后在你的 vc 里面,把它变成一个实例变量
var sensorView:CardSensors!
sensorView = CardSensors.loadFromNib()
sensorView.sensors = sensores
sensorView.setupCollectionView()
【讨论】:
以上是关于如何从另一个类执行 collectionView 方法?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 Collectionview 传递到 UIcollectionResuableview