Мне нужно заполнить данные множеством табличных представлений, которые находятся в представлении коллекции. Количество просмотров таблиц растет с приходом данных, что неизвестно. Каждое табличное представление находится в ячейке uicollectionview. Смахивание по горизонтали. В настоящее время данные отображаются в первой таблице и в третьей, пятой и так далее. И все данные одинаковы. Я хочу, чтобы данные отображались только в первую очередь. И когда я пролистываю до следующей таблицы, в таблице отображаются новые данные.
Edit:
Я могу отображать данные в каждом другом виде таблицы. И переходите от одного вида таблицы к другому с данными, которые мне нужны.
Он пропускает все остальные таблицы и отображает данные, и я не знаю почему!
Я могу отображать данные в первом (оранжевом) виде таблицы, но следующие данные отображаются в третьем (светло-коричневом), а не красном.
Обновление:
С indexPath.item происходит нечто странное:
Когда я нахожусь в первой ячейке, она печатает indexPath.item = 0, когда я нахожусь в средней ячейке, она отображает, что она indexPath.item = 2.
Update
Как вы можете видеть, indexPath.item отличается и все запутано по сравнению с MenuBar, я хочу, чтобы они равнялись
Обновление
Решено выше GIF проблема с:
collectionView.isPrefetchingEnabled = false
Теперь данные отображаются правильно при первом просмотре таблицы, и когда я переключаюсь на следующий просмотр таблицы, там отображаются новые данные, но затем они дублируются, поэтому 3-й совпадает с 1-м, а 4-й совпадает с 2-м табличным видом.
Обновление с кодом:
MenuBar (Top Uicollectionview с ячейками, обведены в кружок 1,2,3 ... и т. Д. Изображения)
class MenuBar: UIView, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
NewReceiveViewController
class NewReceiveViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
var myData: [[UInt8]] = [] // will this be ReceivedArrays?
....
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(ReceivedCell.self, forCellWithReuseIdentifier: cellId)
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! ReceivedCell
cell.backgroundColor = UIColor.lightGray // just to see where the cell is
cell.configure(with: myData[indexPath.row])
return cell
class ReceivedCell: UICollectionViewCell {
//vars for the data
var recievedArrays: [[UInt8]] = [] //receivedbytes array is put into array here
var receivedBytes: [UInt8] = []{ //receieved bytes
didSet {
tableView.reloadData()
}
var data: [UInt8] = [] // will this be receieved bytes?
func configure(with data: UInt8) {
self.data = [data]
self.tableView.dataSource = self
}
extension ReceivedCell: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return recievedArrays.count //counting and returning how many receivedbytes arrays in receivedArrays
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: tableViewCell, for: indexPath)
...
// table cells set here
// I'm a bit unsure how to set up the cell with self.data
...
return cell