Я пытаюсь вручную вызвать didSelectRowAtIndexPath
при создании ячейки cellForRowAt
, потому что это обновит подробный вид без физического прикосновения к строке, но когда я это делаю, я получаю нулевую ошибку при определении ячейки внутри фактический метод делегата didSelectRowAtIndexPath
, в то время как если я не вызову его внутри cellForRowAt
, он будет работать как положено. Я предполагаю, что во время создания ячейки фактически нет ячеек для чтения, следовательно, нулевое значение.
Как можно выполнить логику внутри didSelectRowAtIndexPath
во время создания ячейки? Я думал об открытии фигурных скобок и установил там логику, но она не принимает скобки там.
Вы видите, правильно ли я выполняю вызов didSelectRowAtIndexPath
? Большое спасибо как всегда.
Это функции:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "bookingCell", for: indexPath) as! BookingTableViewCell
let booking = self.fetchedResultController?.object(at: indexPath)
// Configure the cell...
cell.cellId = booking!.bookingId
cell.bookingId = booking!.bookingId
print(booking!.bookingId)
cell.bookingIdInfoLabel.text = booking!.bookingId
cell.bookingDate = booking!.bookingDate
cell.bookingDateInfoLabel.text = booking?.bookingDate
cell.bookingStart = booking!.bookingStart
cell.bookingStartInfoLabel.text = booking?.bookingStart
cell.bookingEnd = booking!.bookingEnd
cell.bookingEndInfoLabel.text = booking?.bookingEnd
cell.bookingPrice = booking!.bookingPrice
cell.worksDescription = booking!.worksList
cell.customerName = booking!.customerName
cell.customerNameInfoLabel.text = booking?.customerName
cell.cellView.layer.cornerRadius = cornerRadius
cell.cellView.clipsToBounds = true
cell.bookingIdInfoLabel.layer.cornerRadius = cornerRadius
cell.bookingIdInfoLabel.clipsToBounds = true
cell.bookingDateInfoLabel.layer.cornerRadius = cornerRadius
cell.bookingDateInfoLabel.clipsToBounds = true
cell.bookingStartInfoLabel.layer.cornerRadius = cornerRadius
cell.bookingStartInfoLabel.clipsToBounds = true
cell.bookingEndInfoLabel.layer.cornerRadius = cornerRadius
cell.bookingEndInfoLabel.clipsToBounds = true
cell.customerNameInfoLabel.layer.cornerRadius = cornerRadius
cell.customerNameInfoLabel.clipsToBounds = true
// set the corresponding row for the selected time slot's booking as selected
if cell.cellId == self.bookingId {
tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.middle) // select timeslot's corresponding row
self.tableView(self.bookingTableView, didSelectRowAt: indexPath)
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! BookingTableViewCell
print("selected cell id is : \(cell.cellId!)")
self.bookingIdInfoLabel.text = cell.bookingId
self.bookingDateInfoLabel.text = cell.bookingDate
self.bookingStartInfoLabel.text = cell.bookingStart
self.bookingEndInfoLabel.text = cell.bookingEnd
self.priceInfoLabel.text = cell.bookingPrice
self.customerInfoLabel.text = cell.customerName
self.worksDescriptionInfoTextVIew.text = cell.worksDescription
}