Super newb в разработке Swift и iOS.
Я следую этот учебник о внедрении настраиваемого элемента управления в приложении iOS с одним представлением. Это учебник Swift 2, но до сих пор я делаю OK, перенося все на 3, когда я иду (я использую бета-версию XCode 8).
У меня есть собственный класс RatingControl
, связанный с View
в раскадровке.
В конструкторе класса я создаю кнопку:
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
button.backgroundColor = UIColor.red()
Затем я пытаюсь назначить действие кнопке. В учебнике сказано, что я должен сделать это так:
button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)),
for: .touchDown)
а затем создайте в том же классе RatingControl
метод:
func ratingButtonTapped(button: UIButton) {
print("Button pressed 👍")
}
Но когда я компилирую, он жалуется:
type "RatingControl" не имеет члена "ratingButtonTapped"
Я сделал 100% уверенность, что функция есть, в классе и правильно названа. Полный источник
Есть ли что-то очевидное, что мне не хватает?
Что я пробовал:
-
Добавлен
@objc
к определению класса в соответствии с этим ответом (но это кажется странным для вещи только для Swift, нет?) -
Сделано
ratingButtonTapped()
явноpublic
(но это не похоже, что это необходимо) -
Спрятано со строками вместо селекторов
button.addTarget(self, action: "RatingControl.ratingButtonTapped", for: .touchDown)
и еще много, но это просто сработает позже.