не удалось выяснить, какого отправителя вернуть из LeadingSwipeActions для подготовки к переходу
Извините, я новичок в разработке Swift и IOS, но у меня есть табличное представление с каждым элементом в табличном представлении. Я могу нажать на элемент, чтобы перейти на экран редактирования, который определяет информацию в ячейке таблицы. Я хотел бы также иметьleadingSwipeActionsConfigurationForRowAt
вызвать кнопку редактирования, которая использует тот же способ перехода к экрану редактирования, что и касание ячейки. Проблема в том, что мойprepare(for segue:)
Оператор обработки перехода отвода продолжает давать сбой из-за отправителя leadSwipeAction. Теперь я действительно не понимаю, что я должен указать в качестве отправителя в моем adingSwipeAction. Я пробовалUITableViewCell()
что не удалось это заявление защиты:
guard let ViewController = segue.destination as? ViewController else {
fatalError("Unexpected destination: \(segue.destination)")
}
за то, что он UIView(), а затем я попытался отправить taskCellTableViewCell
который является объектом / классом, который я назвал отдельной ячейкой, но который вернул пустую / пустую ячейку, которая не прошла другой оператор защиты при подготовке. Итак, теперь я не понимаю, как получить и отправить фактическую ячейку, для которой было выполнено leadSwipeAction. Я надеюсь, что кто-нибудь сможет помочь мне определить правильного отправителя, которого мне нужно вернуть, чтобы пройти подготовку. Спасибо
Вот код, используемый для leadSwipeAction и подготовки:
//leading swipe for editing code
override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let edit = UIContextualAction(style: .normal, title: "Edit") { (contextualAction, view, actionPerformed: (Bool) -> ()) in
self.performSegue(withIdentifier: "showDetail", sender: UITableViewCell())
actionPerformed(true)
}
return UISwipeActionsConfiguration(actions: [edit])
}
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "addItem":
os_log("Adding a new task.", log: OSLog.default, type: .debug)
case "showDetail":
guard let ViewController = segue.destination as? ViewController else {
fatalError("Unexpected destination: \(segue.destination)")
}
guard let selectedTaskCell = sender as? taskCellTableViewCell else {
fatalError("Unexpected sender: \(sender)")
}
guard let indexPath = tableView.indexPath(for: selectedTaskCell) else {
fatalError("The selected cell is not being displayed by the table")
}
let selectedTask = tasks[indexPath.row]
ViewController.Task = selectedTask
default:
fatalError("Unexpected Segue Identifier; \(segue.identifier)")
}
}
ему не удается снова использовать переход showDetail.
Также здесь pastebin полного кода проекта pastebin
2 ответа
Я не думаю tableViewCell
можно использовать в качестве отправителя, разве вы не можете установить это значение ViewController
вы инициируете переход, это должно сработать.
Хорошо, после поиска и изменения моего поиска в Google, используя все модные слова, которые я могу придумать, я наконец нашел ответ. Чтобы отправителем была текущая ячейка,LeadingSwipeAction
выполняется, если отправителю необходимо установить tableView.cellForRow(at: indexPath)
который принимает tableView, передаваемый в функцию LeadingSwipe, и получает ячейку из indexPath.