не удалось выяснить, какого отправителя вернуть из 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.

Другие вопросы по тегам