Я получаю данные из службы API, которые я передаю в мое табличное представление и создаю раздел и ячейку под ним. Количество разделов и ячеек являются динамическими, зависит от данных, поступающих от службы. У меня есть кнопка на моей камере. Название кнопки добавить. Когда я нажимаю кнопку добавления, отображаются предупреждения, содержащие представление таблицы. Это табличное представление в предупреждении показывает только те данные, которые относятся к этой конкретной ячейке в ее разделе. Я создал метод делегата для кнопки, в котором я получаю indexPath.row этой выбранной кнопки и передаю данные из моей модели в табличное представление внутри оповещения. Когда я нажимаю первую кнопку добавления ячейки, все хорошо, но когда я нажимаю кнопку добавления из раздела 2, происходит обналичивание. То, что я заметил, что приложение падает, потому что компилятор получает только indexPath.row, но не получает информацию о том, в каком разделе находится эта ячейка. Как я могу узнать мою функцию делегата о том, какая ячейка раздела выделяется при нажатии кнопки добавления. Это мой код для функции делегата в моем классе ячеек,
protocol ResMenuDetailDelegate {
func addOnBtnTapped(tappedIndex : Int)
}
var delegate: ResMenuDetailDelegate?
@IBAction func addBtnTapped(_ sender: Any) {
delegate?.addOnBtnTapped(tappedIndex: addBtn.tag)
}
В моем классе контроллера представления здесь я соответствую методу делегата,
extension RestaurantMenuDetailVC : ResMenuDetailDelegate{
func addOnBtnTapped(tappedIndex: Int) {
print(tappedIndex)
let addonCategory = subCategoryModel![tappedIndex].items[tappedIndex].addonCategory
print(addonCategory as Any)
}
Это мой делегат представления таблицы cellForRow,
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == resMenuTableView{
let cell = resMenuTableView.dequeueReusableCell(withIdentifier: "detailMenuCell", for: indexPath) as! RestaurantMenuDetailTVC
cell.dishTitleLbl.text = subCategoryModel![indexPath.section].items[indexPath.row].itemName
cell.descriptionLbl.text = subCategoryModel![indexPath.section].items[indexPath.row].itemDescription
cell.priceLbl.text = String(subCategoryModel![indexPath.section].items[indexPath.row].itemPrice)
cell.addBtn.tag = indexPath.row
cell.delegate = self
cell.selectionStyle = .none
cell.backgroundColor = UIColor.clear
return cell
}