swift - primaryActionTriggered - проблема отправителя - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть табличное представление с ячейками многократного использования, и у каждого есть текстовое поле (например, поле количества в корзине).И мне нужно обновлять некоторые данные каждый раз, когда редактирование завершается или пользователь нажимает куда-то за пределами клавиатуры, поэтому я использую оба

    @IBAction func quantityEditingDidEnd(_ sender: UITextField) {
            //code
    }
    @IBAction func quantityPrimaryActionTriggered(_ sender: UITextField) {
            let cell = sender.superview?.superview as! BasketTableItemCell
            let indexPath = tableView?.indexPath(for: cell)
            //code
    }

И у меня возникает ошибка с primaryActionTriggered, потому что отправитель должен быть Any, но мне нужно использовать UITextfield, чтобы определить, какая ячейка нажата.Как я могу решить эту проблему - использовать primaryActionTriggered и одновременно определять отправителя как UIView?

*** UPD Я пытался изменить свой код таким образом -

@IBAction func quantityPrimaryActionTriggered(_ sender: Any) {
print("test")
        if let textField = sender as? UITextField {
            let cell = textField.superview?.superview as! BasketTableItemCell
            let indexPath = tableView?.indexPath(for: cell)
            //code
        }
}

но обратите внимание, что на консоли не было строки "test".Так что я думаю, что это @IBAction вообще не работает.Может, дело в ячейке многоразового использования?didEndEditing работает хорошо.Подключение к StoryBoard тоже в порядке.

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете передать элемент как тип Any и разыграть его следующим образом

@IBAction func quantityPrimaryActionTriggered(_ sender: Any) {
        if let textField = sender as? UITextField {
            let cell = textField.superview?.superview as! BasketTableItemCell
            let indexPath = tableView?.indexPath(for: cell)
            //code
        }
}
...