有人知道这里发生了什么吗?我已经用UITableView
配置了CollectionViewCells
,并且每个单元格都应该独立运行,但是当我滑动一个单元格时,它控制着位于其下3个单元格的另一个单元格。
试图重新配置我的UITableViewCells
和CollectionViewCells
。但是我不确定该怎么办
//TableView controler
import UIKit
import CardsLayout
import CHIPageControl
class eventsFeed: UIViewController, UITableViewDelegate, UITableViewDataSource{
// Global Variable
var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
tableView = UITableView(frame: CGRect(x: self.view.bounds.minX, y: self.view.bounds.minY+UIApplication.shared.statusBarFrame.height, width: self.view.bounds.width, height: self.view.bounds.height))
tableView.delegate = self
tableView.separatorStyle = .none
tableView.dataSource = self
tableView.showsVerticalScrollIndicator = false
self.view.addSubview(tableView)
tableView.register(TableViewCell.self, forCellReuseIdentifier: "TableViewCell")
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
cell.backgroundColor = UIColor.white
cell.selectionStyle = .none
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return 430.0;//Choose your custom row height
}
}
//CollectionViewCell for TableView
import UIKit
import CardsLayout
class TableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate {
var collectionView: UICollectionView!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.scrollDirection = UICollectionViewScrollDirection.horizontal
collectionView = UICollectionView(frame: CGRect(x: 0, y:0, width: UIScreen.main.bounds.width, height: 410.0), collectionViewLayout: layout)
collectionView.center = CGPoint(x: 187.5, y: 180)
collectionView.collectionViewLayout = CardsCollectionViewLayout()
collectionView.delegate = self
collectionView.dataSource = self
collectionView.isPagingEnabled = true
collectionView.showsHorizontalScrollIndicator = false
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
collectionView.backgroundColor = UIColor.white
self.addSubview(collectionView)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
var colors: [UIColor] = [
UIColor(red: 237, green: 37, blue: 78),
UIColor(red: 249, green: 220, blue: 92),
UIColor.blue,
UIColor(red: 1, green: 25, blue: 54),
UIColor(red: 255, green: 184, blue: 209),
UIColor(red: 237, green: 37, blue: 78),
UIColor(red: 249, green: 220, blue: 92)
]
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
cell.layer.cornerRadius = 12.0
cell.backgroundColor = colors[indexPath.row]
return cell
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return colors.count
}
}
发布视频:https://www.reddit.com/r/iOSProgramming/comments/btcok4/does_anyone_know_whats_happening_here_ive/
答案 0 :(得分:2)
单元被重用。这意味着您必须选择与他们合作的不同策略。
为每个表视图单元格保存当前状态(例如,在数组的结构中),然后在委托cellForRowAt
的方法中基于此状态配置单元格。