Как убрать ошибку Index out of range в классе ячейки UICollectionView
Как убрать ошибку выхода indexPath за границу. В программе есть TableView, в котором каждая ячейка содержит CollectionView. В ячейке CollectionView имеется один label. Из массива данных я вывожу данные в эти лейблы по определенному алгоритму.
Класс ячейки таблицы
import UIKit
class TableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var packet: UICollectionView!
var pack = [UInt8]()
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return pack.count
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "byteCell", for: indexPath) as! CollectionViewCell
cell.byte.text = String(pack[indexPath.row])
return cell
}
}
Класс ячейки коллекции
import UIKit
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var byte: UILabel!
}
Сам контроллер
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var dataFromFile = [UInt8]()
var packet = [UInt8]()
var numberOfPackets = Array<Array<UInt8>>()
@IBOutlet var moleculesHolder: SKView!
@IBOutlet var moleculesInfoTableView: UITableView!
@IBOutlet weak var sigview: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
moleculesHolder = SKView()
moleculesHolder.backgroundColor = UIColor.darkGray
sigview.delegate = self
sigview.dataSource = self
}
@IBAction func openFileButtonTapped(_ sender: UIButton) {
let documentPicker = UIDocumentPickerViewController(documentTypes: ["public.data"], in: .import)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = .fullScreen
present(documentPicker, animated: true, completion: nil)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return numberOfPackets.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
cell.pack = numberOfPackets[indexPath.row]
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if tableView == sigview {
return 1
} else {
return 1
}
}
}
Если есть более простой способ создать таблицу с горизонтальным и вертикальным скроллингом (при этом количество ячеек в каждой строчке может быть разным), то напишите, пожалуйста