#ios #swift5
#iOS #swift5
Вопрос:
Работая над некоторым проектом IOS (Swift5), который включает в себя функции входа в систему, я столкнулся со странной проблемой, которая заключается в открытии по нажатию кнопки нового UITableViewController, который включает в себя некоторые записи из базы данных. Странно, потому что эта же функциональность работает без каких-либо проблем с точки зрения входа в систему и не работает с точки зрения после входа пользователя в систему.
Это метод, который открывает новый контроллер:
@IBAction func didTapButton(sender: Any) {
// let story : UIStoryboard = UIStoryboard(name: "Main",
bundle:nil)
let categories = CategoriesTableViewController()
navigationController?.pushViewController(categories,
animated: true)
// let controller =
story.instantiateViewController(identifier:
"CategoriesTableViewController") as!
CategoriesTableViewController
//
// present(controller, animated: true)
}
И это ошибка, которая возникает, когда я запускаю этот описанный выше метод по щелчку, как только я войду в это приложение:
Exception NSException * "-
[project7_4_adm.ViewController
didTapButtonWithSender:]: unrecognized selector sent
to instance 0x7f9889222260" 0x0000600001d35860
Я нашел в Google какое-то решение, которое заключается в добавлении цели к кнопке, что я и сделал:
btn.addTarget(self, action:
#selector(didTapButton(sender:)), for:
.touchUpInside)
но, несмотря на то, что я это сделал, я получил сообщение об ошибке:
Thread 1: "-
[project7_4_adm.CategoriesTableViewController
initWithIdentifier:source:destination:]: unrecognized
selector sent to instance 0x7fac3a11df90"
Могу ли я попросить вас написать мне, что может быть причиной этой проблемы?
Спасибо
Комментарии:
1. Ваш целевой селектор определяется как имеющий один параметр (отправитель). В вашей реализации его нет.
2. @ Phillip Mills у него есть параметр, только что отредактированный и добавленный.
Ответ №1:
Причина исключения четко указывает, что didTapButton(sender...
переводится в Objective-C как didTapButtonWithSender:
В an IBAction
вам нужно вставить символ подчеркивания
@IBAction func didTapButton(_ sender: Any)
и селектор может быть просто
#selector(didTapButton)
Комментарии:
1. этот метод включает в себя этот параметр, я обновил выше.
2.
IBAction
Необходимо включить параметр, а символ подчеркивания скрывает только имя внешнего параметра.3. у него есть параметр и подчеркивание, и я все еще получаю ошибку
4. В построителе интерфейса повторно подключите действие.