Извините, я новичок в разработке Swift и IOS, но у меня есть табличное представление с каждым элементом в табличном представлении. Я могу нажать на элемент, чтобы go перейти к экрану редактирования, который определяет информацию в ячейке таблицы. , Я также хотел бы, чтобы leadingSwipeActionsConfigurationForRowAt
вызвал кнопку редактирования, которая использует тот же самый способ перехода к экрану редактирования, что и прикосновение к ячейке. Проблема заключается в том, что мой оператор prepare(for segue:)
для обработки перехода к файлу продолжает сбой из-за отправителя LeadingSwipeAction. Теперь я действительно озадачен тем, что я должен указать в качестве отправителя в моей ведущей акции. Я пробовал UITableViewCell()
, который не смог выполнить это защитное утверждение:
guard let ViewController = segue.destination as? ViewController else {
fatalError("Unexpected destination: \(segue.destination)")
}
за то, что он UIView (), а затем я попытался отправить taskCellTableViewCell
, который является объектом / классом I вызвал отдельную ячейку, но вернул ноль / пустую ячейку, которая не смогла выполнить еще одно защитное утверждение Так что теперь я запутался в том, как получить и отправить фактическую ячейку, на которой было выполнено 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