Функция UIButton не будет отвечать при вызове в ячейке UITableView. ⇐ IOS
-
Anonymous
Функция UIButton не будет отвечать при вызове в ячейке UITableView.
У меня есть UITableView, и я также определил его подкласс, чтобы включить кнопку в каждую из моих ячеек.
Чтобы проверить правильность работы его функций, я определил функцию @objc (поскольку я делаю это программно).
Я вижу, что ячейки таблицы присутствуют, а также кнопка, видимая внутри нее, поскольку я уже зарегистрировал ее в функции viewDidLoad моего класса UIViewController, но когда я нажмите на него, он не отвечает. Я ожидаю получить сообщение, напечатанное в консоли
@objc func actbuttonFuncCall(_ sender: UIButton) { print("кнопка нажата") } Вот как я определил функцию tableView для раздела cellForRowAt:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath) as! MyCustomCell если пусть модель =viewsArray[indexPath.row] { // имя присвоено из другого VC ячейка.textLabel?.text = модель.имя cell.textLabel?.textColor = .systemPink cell.button.isUserInteractionEnabled = true ячейка.isUserInteractionEnabled = истина cell.button.addTarget(self, действие: #selector(actbuttonFuncCall), для: .touchUpInside) } возвратная ячейка } И это подкласс моего UIButton
класс MyCustomCell: UITableViewCell { пусть кнопка = UIButton() переопределить init(стиль: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(стиль: стиль, reuseIdentifier: reuseIdentifier) button.setTitle("Приступаем к делу", for: .normal) button.backgroundColor = .blue addSubview (кнопка) button.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ button.centerYAnchor.constraint(equalTo: centerYAnchor), button.centerXAnchor.constraint(equalTo: centerXAnchor), button.widthAnchor.constraint(equalToConstant: 100), // Отрегулируйте по мере необходимости button.heightAnchor.constraint(equalToConstant: 40) // Отрегулируйте по мере необходимости ]) } требуется инициализация?(кодер: NSCoder) { FatalError("init(coder:) не реализован") } } Нужно ли выполнить какие-либо еще действия, чтобы кнопка заработала?
У меня есть UITableView, и я также определил его подкласс, чтобы включить кнопку в каждую из моих ячеек.
Чтобы проверить правильность работы его функций, я определил функцию @objc (поскольку я делаю это программно).
Я вижу, что ячейки таблицы присутствуют, а также кнопка, видимая внутри нее, поскольку я уже зарегистрировал ее в функции viewDidLoad моего класса UIViewController, но когда я нажмите на него, он не отвечает. Я ожидаю получить сообщение, напечатанное в консоли
@objc func actbuttonFuncCall(_ sender: UIButton) { print("кнопка нажата") } Вот как я определил функцию tableView для раздела cellForRowAt:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath) as! MyCustomCell если пусть модель =viewsArray[indexPath.row] { // имя присвоено из другого VC ячейка.textLabel?.text = модель.имя cell.textLabel?.textColor = .systemPink cell.button.isUserInteractionEnabled = true ячейка.isUserInteractionEnabled = истина cell.button.addTarget(self, действие: #selector(actbuttonFuncCall), для: .touchUpInside) } возвратная ячейка } И это подкласс моего UIButton
класс MyCustomCell: UITableViewCell { пусть кнопка = UIButton() переопределить init(стиль: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(стиль: стиль, reuseIdentifier: reuseIdentifier) button.setTitle("Приступаем к делу", for: .normal) button.backgroundColor = .blue addSubview (кнопка) button.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ button.centerYAnchor.constraint(equalTo: centerYAnchor), button.centerXAnchor.constraint(equalTo: centerXAnchor), button.widthAnchor.constraint(equalToConstant: 100), // Отрегулируйте по мере необходимости button.heightAnchor.constraint(equalToConstant: 40) // Отрегулируйте по мере необходимости ]) } требуется инициализация?(кодер: NSCoder) { FatalError("init(coder:) не реализован") } } Нужно ли выполнить какие-либо еще действия, чтобы кнопка заработала?
Мобильная версия