Дополнительно
Аргумент '#селектор' не относится к '@язык' метод, свойство или инициализатор
Я sublcassed в Свифт 3 в UIButton
подкласс, который написан на Objective-С.
Когда я пытаюсь добавить цель, она завершается с кодом ошибки:
class ActionButton: JTImageButton {
func action() {
}
func configure()) {
// ...
self.addTarget(self, action: #selector(self.action()), for: .touchUpInside)
// error:
// Argument of '#selector' does not refer to an '@objc' method, property, or initializer
}
}
34
6
Проблема в том, что в
#селектора(самовыдвижение.действие())
,самостоятельно.действие ()
- это HTTP, то call_. Вы Don'т хотите call метод; вы хотите name метод. Сказать `#селектора(действий) вместо: потерять скобки, плюс там's нет необходимости в "я".Все, что вам нужно сделать, это пометить функцию как `@взаимодействию и там's нет необходимости ссылаться на " Я " или скобочки
Вы даже можете сделать это "частный", если вы хотите
Добавление ключевого слова@взаимодействию в передней метод, который идеально подходит, но у меня все еще есть эта ошибка. Наконец, я нашел решение следующим образом
Есть пара лишних скобок за метод, как показано на фото выше. Что я должен сделать, это удалить его, и он работал хорошо.
Добавлено из комментариев на другой ответ: функции действия() это не просто плохой выбор для имени функции и действия, он не сможет построить. (Вы можете использовать его в качестве параметра функции входного сигнала, хотя, который я делаю для наглядности при прохождении в целевой/действия в методе init (), которая устанавливает эти вещи.) Я'м замена этого с MyAction() для ясности.
Попробуйте это:
Тот сказал, гораздо лучше дизайн, чтобы переместить MyAction() функция кнопки суперпанель, поскольку это делает вещи более выравниваются с базового проектирования MVC:
Суперпанель:
Альтернативой кодирования для этого, удерживая "в действии () на" метод в-представление-контроллер, но подвижным только в "addTarget" и в кнопку:
Почему я прошу Вас рассмотреть вопрос о переходе в "MyAction () на" Метод суперпанель? Двоякой:
Вместо того чтобы сказать "я".действие()
, ActionButton использовать
.действие()`.Если вы Don'т ум добавления дополнительной функции, вы могли бы вложить функцию.