我正在创建一个包含每月日历的可滚动视图。我正在使用集合视图在充满日历的表视图中显示日历。因此,每个表格视图单元格都是特定月份的日历,每个集合视图单元格都是一天。我从视图控制器为tableview单元有一个单独的swift文件。由于每个表格单元格的外观都会有所不同(因为月份不同),因此表格单元格需要知道在dequeque单元格函数中创建表格时将其放置在表格视图中的哪一行。
tableView.dequeueReusableCell(withIdentifier: "CalendarTableViewCell", for: indexPath)
我需要在表格单元格文件内的“ for:indexPath”参数中获取indexPath,因为当表格单元格出队时,表格单元格内的collectionview会被创建。集合视图的内容取决于它在哪个表视图行中。那么如何获取该参数?
很抱歉为您解释过多,请尽可能提供帮助。谢谢!
答案 0 :(得分:0)
在UITableViewCell子类中创建一个数组,然后在集合视图数据源方法中使用该数组。
class MonthCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
let datesArray = [String]()
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return datesArray.count
}
}
在tableView cellForRowAt
方法中分配日期值并重新加载collectionView
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! MonthCell
cell.datesArray = []//dates based on indexPath
cell.collectionView.reloadData()
return cell
}
或
在tableView cellForRowAt
方法中分配对表格视图单元格索引路径的引用
class MonthCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
var tableIndexPath:IndexPath?
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if let tableIndexPath {
// return value based on tableIndexPath
} else {
return 0
}
}
}
// cellForRowAt
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MonthCell") as! MonthCell
cell.tableIndexPath = indexPath
cell.collectionView.reloadData()
return cell
}