Я реализую вложенное представление UITableview, которое имеет UITableview, в ячейке которого есть еще одно UITableview, оба UITableview имеют ячейку автоматического изменения размера с динамическими данными, а также верхний и нижний колонтитулы. Итак, проблема, с которой я сталкиваюсь, заключается в том, что когда данные во внутреннем таблице большие, приложение выходит из строя, иногда, когда я прокручиваю до двух/трех ячеек, оно работает, но затем происходит сбой. У меня есть вложенные массивы, с помощью которых я присваиваю данные табличному представлению.
Ниже описан подход, с которым я работаю.
У меня есть два массива и UITableview в основном/родительском представлении. контроллер.
Приведенный выше код работает хорошо, но проблема (сбой) возникает, когда данные для внутреннего табличного представления большие (например, несколько строк внутри раздела).
Или в других случаях простой способ, если я заменю секциюRowArray,
Как решить эту проблему? Я застрял в этой проблеме в течение 3 дней, но не смог найти рабочего решения.
Приведенные выше данные являются фиктивными, но реальные данные, которые я получаю, также похожи на них.
Я реализую вложенное представление UITableview, которое имеет UITableview, в ячейке которого есть еще одно UITableview, оба UITableview имеют ячейку автоматического изменения размера с динамическими данными, а также верхний и нижний колонтитулы. Итак, проблема, с которой я сталкиваюсь, заключается в том, что когда данные во внутреннем таблице большие, приложение выходит из строя, иногда, когда я прокручиваю до двух/трех ячеек, оно работает, но затем происходит сбой. У меня есть вложенные массивы, с помощью которых я присваиваю данные табличному представлению. Ниже описан подход, с которым я работаю. У меня есть два массива и UITableview в основном/родительском представлении. контроллер. [code]@IBOutlet weak var bookingListTableview: UITableView! var sectionArray = [["Member-One","Member-Two"],["Member-One","Member-Two","Member-Three"],["Member-One"],["Member-One","Member-Two","Member-Three","Member-four"],["Member-One","Member-Two"],["Member-One","Member-Two"]] var sectionRowArray = [ [["M1-Row-One","M1-Row-Two"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-Two","M1-Row-Three"],["M2-Row-One","M2-Row-Two","M2-Row-Three"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-One"]], [["M1-Row-One","M1-Row-One"],["M2-Row-One","M2-Row-Two"],["M3-Row-Three","M3-Row-four"],["M4-Row-Three","M4-Row-four"]], [["M1-Row-One","M1-Row-Two"],["M1-Row-one","M2-Row-Two","M3-Row-Three"]], [["Row-One","Row-Two",],["Row-One","Row-Two"]] ] [/code] Тогда мои методы делегата UITableview и источника данных будут такими, как показано ниже. [code]func numberOfSections(in tableView: UITableView) -> Int { return sectionArray?.results?.count ?? 0 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let revampCell = self.bookingListTableview.dequeueReusableCell(withIdentifier: "revampTableViewCell", for: indexPath) as! RevampTableViewCell revampCell.sectionArray = self.sectionArray[indexPath.section] revampCell.memberTestPackageArray = self.sectionRowArray[indexPath.section] return revampCell
[/code] А внутри RevampTableViewCell у меня есть два массива и UITableview, как показано ниже: [code]@IBOutlet weak var bookingViewMembersTableview: UITableView! var sectionArray = [String]() var memberTestPackageArray = [[String]]() [/code] Тогда мой внутренний делегат UITableview и методы источника данных выглядят так, как показано ниже. [code]func numberOfSections(in tableView: UITableView) -> Int { return sectionArray.count } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return memberTestPackageArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let bookingViewMemberCell = tableView.dequeueReusableCell(withIdentifier: "BookingViewMembersTableViewCell", for: indexPath) as! BookingViewMembersTableViewCell bookingViewMemberCell.testPackageNameLabel.text = memberTestPackageArray[indexPath.section][indexPath.row] return bookingViewMemberCell } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = UIView() headerView.backgroundColor = .white let label = UILabel(frame: CGRect(x: 15, y: -15, width: tableView.frame.size.width - 30, height: 30)) label.font = R.font.poppinsSemiBold(size: 15) label.numberOfLines = 0 label.textColor = #colorLiteral(red: 0.1369999945, green: 0.3569999933, blue: 0.5569999814, alpha: 1) label.textColor = UIColor.hexString("#000000") label.text = sectionArray[section] headerView.addSubview(label) return headerView } [/code] Приведенный выше код работает хорошо, но проблема (сбой) возникает, когда данные для внутреннего табличного представления большие (например, несколько строк внутри раздела). Или в других случаях простой способ, если я заменю секциюRowArray, [code]var sectionRowArray = [ [["M1-Row-One","M1-Row-Two"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-Two","M1-Row-Three"],["M2-Row-One","M2-Row-Two","M2-Row-Three"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-One"]], [["M1-Row-One","M1-Row-One"],["M2-Row-One","M2-Row-Two"],["M3-Row-Three","M3-Row-four"],["M4-Row-Three","M4-Row-four"]], [["M1-Row-One","M1-Row-Two"],["M1-Row-one","M2-Row-Two","M3-Row-Three"]], [["Row-One","Row-Two",],["Row-One","Row-Two"]] ] [/code] с приведенным ниже массивом, [code]var sectionRowArray = [ [["M1-Row-One","M1-Row-Two"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-Two","M1-Row-Three"],["M2-Row-One","M2-Row-Two","M2-Row-Three"],["M2-Row-One","M2-Row-Two"]], [["M1-Row-One","M1-Row-One"]], [["M1-Row-One","M1-Row-One"],["M2-Row-One","M2-Row-Two"],["M3-Row-Three","M3-Row-four"],["M4-Row-Three","M4-Row-four"]], [["M1-Row-One","M1-Row-Two","M1-Row-Three","M1-Row-Four","M1-Row-Five","M1-Row-Six","M1-Row-Seven","M1-Row-Eight","M1-Row-Nine","M1-Row-Ten"],["M1-Row-one","M2-Row-Two","M3-Row-Three","M1-Row-Four","M2-Row-Five","M1-Row-Six","M2-Row-Seven"]], [["Row-One","Row-Two",],["Row-One","Row-Two"]] ] [/code] Как решить эту проблему? Я застрял в этой проблеме в течение 3 дней, но не смог найти рабочего решения. Приведенные выше данные являются фиктивными, но реальные данные, которые я получаю, также похожи на них.