Как убрать ошибку 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
    }
}

}

Если есть более простой способ создать таблицу с горизонтальным и вертикальным скроллингом (при этом количество ячеек в каждой строчке может быть разным), то напишите, пожалуйста


Ответы (0 шт):