从 collectionView 单元格中获取并更新 UITableView 单元格单击
fetch & update UITableView cells from a collectionView cell click
说,我有一个带有 tableView
的 ViewControllerA,并且 tableView
使用 xib
方法创建和加载了 header 视图,并且 headerView 包含一个 .horizontal
滚动方向 collectionView,我的问题是如何在 headerView 内的 collectionView
发起的点击时更新 tableView
的内容?
类似的例子如下图:
比如说,我点击了 Tableview 的 HeaderView 中 UICollectionViewCell
上的“Research”标签,tableView 重新加载了“Research”的数据,接下来我点击了“Design”标签,tableView 重新加载了本身并显示“设计”的数据......这样的事情是可能的吗?我被困在这里..
link header UICollectionView
到情节提要中的出口,然后实现所有必需的委托方法。
添加此委托方法:
class ViewController: UIViewController{
var categories = [String]()
var discoverData = [discoverModel]()
var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
categories.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//code to initialize cells of header collecionView
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedCategory = categories[indexPath.row]
let cellToReload = discoverData.filter{return [=10=].serviceName == selectedCategory}[0]
guard let indexPathsOfCellToRealod = discoverData.firstIndex(of: cellToReload) else { return }
tableView.reloadRows(at: [IndexPath(index: indexPathsOfCellToRealod)], with: .automatic)
}
}
struct discoverModel: Equatable{
var image: UIImage
var serviceName: String
var name: String
var description: String
}
要完成这项工作,只需将标准 UITableView
委托方法添加到您的 ViewController
说,我有一个带有 tableView
的 ViewControllerA,并且 tableView
使用 xib
方法创建和加载了 header 视图,并且 headerView 包含一个 .horizontal
滚动方向 collectionView,我的问题是如何在 headerView 内的 collectionView
发起的点击时更新 tableView
的内容?
类似的例子如下图:
比如说,我点击了 Tableview 的 HeaderView 中 UICollectionViewCell
上的“Research”标签,tableView 重新加载了“Research”的数据,接下来我点击了“Design”标签,tableView 重新加载了本身并显示“设计”的数据......这样的事情是可能的吗?我被困在这里..
link header UICollectionView
到情节提要中的出口,然后实现所有必需的委托方法。
添加此委托方法:
class ViewController: UIViewController{
var categories = [String]()
var discoverData = [discoverModel]()
var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
categories.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//code to initialize cells of header collecionView
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedCategory = categories[indexPath.row]
let cellToReload = discoverData.filter{return [=10=].serviceName == selectedCategory}[0]
guard let indexPathsOfCellToRealod = discoverData.firstIndex(of: cellToReload) else { return }
tableView.reloadRows(at: [IndexPath(index: indexPathsOfCellToRealod)], with: .automatic)
}
}
struct discoverModel: Equatable{
var image: UIImage
var serviceName: String
var name: String
var description: String
}
要完成这项工作,只需将标准 UITableView
委托方法添加到您的 ViewController