Как разделить tableview на разделы без изменения модели
Я пытаюсь добавить разделы в свой UITableView. Я могу создавать разделы и правильно подсчитывать количество элементов в каждом разделе, ячейки/изображения повторяют данные во всех разделах.
Размещение только релевантного кода:
Модель:
Что я уже пробовал:
struct Product:Equatable { let imagename: UIImage } var productarray = [ Product(imagename:#imageLiteral(resourceName: "blue")), Product( imagename:#imageLiteral(resourceName: "CakeImage")),Product(imagename:#imageLiteral(resourceName: "vectorlogo")), Product(imagename:#imageLiteral(resourceName: "PeasImge")),Product(imagename:#imageLiteral(resourceName: "castle")), Product( imagename:#imageLiteral(resourceName: "scoobydoo")),Product(imagename:#imageLiteral(resourceName: "ufo")), Product( imagename:#imageLiteral(resourceName: "wolfsky")),Product( imagename:#imageLiteral(resourceName: "universe")), Product(imagename:#imageLiteral(resourceName: "werewolf")),Product( imagename:#imageLiteral(resourceName: "galaxy")) ]
class ProductViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { let sections = ["Section A", "Section B","Section C", "Section D","Section E"] let rowspersection = [2,3,2,2,2] @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } func numberOfSections(in tableView: UITableView) -> Int { return sections.count } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return rowspersection[section] } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let data = productarray[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "ProductTableViewCell") as! ProductTableViewCell cell.imageView?.image = data.imagename cell.myParent = self return cell } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 44 } func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { switch(section) { case 0: return "Section A" case 1: return "Section B" case 2: return "Section C" case 3: return "Section D" case 4: return "Section E" default: return "" } } }
Объясняя результат в симуляторе, так как я не могу загрузить скриншот здесь -
Изображения в “productarray” в модели “struct Product” являются:
синий, CakeImage, vectorlogo, PeasImge, замок, scoobydoo , НЛО, wolfsky, Вселенная, оборотень, галактика
но конечным продуктом в симуляторе является:
Раздел а: синий, CakeImage
Раздел в: синий, CakeImage, vectorlogo
Раздел с: Синий, CakeImage
Раздел D: синий, CakeImage
Раздел е: синий, CakeImage
то есть изображения/ячейки повторяются, чего я не хочу. Я хочу, чтобы секции были размещены между ячейками/изображениями так, как я хочу. Пожалуйста, помогите мне.
чего я хочу, так это:-
Раздел а: синий, CakeImage
Секция в: векторлого, Пизимге, замок
Секция с: Скубиду , НЛО,
Раздел D: wolfsky, universe
Секция E: оборотень, галактика
Примечание: Я не хочу менять модель "struct Product", потому что тогда мне придется изменить другой обширный код, который я здесь не упомянул.
Я буду в долгу, если вы мне поможете.
Gerry Schmitz
Общим фактором являются первые два (2) элемента в вашем массиве; это должно вам что-то сказать (включая "2" ... например, возможно, Ваш массив rowspersection).
Member 12959299
На этот вопрос был дан ответ здесь - https://stackoverflow.com/a/64057717/7444874
Member 12959299
На этот вопрос был дан ответ здесь - https://stackoverflow.com/a/64057717/7444874