Swift - SwipingController Programmatic - кнопка не работает

Я создал приложение SwipingController. В приложении должен был быть функционал прокрутки жестами и панель управления с 2-мя кнопками и UIPageControl.

На данный момент эти кнопки должны были печатать только текстовое сообщение в консоли, но это не так.

       let nextButton: UIButton = {
    let button = UIButton(type: .system)
    button.setTitle("NEXT", for: .normal)
    button.setTitleColor(.black, for: .normal)
    button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
    button.addTarget(self, action: #selector(handleNextButton), for: .touchUpInside)

    return button
}()
@objc func handleNextButton() {
    print("Next Botton Pressed")
}

Я хотел добавить всю панель управления страницей в отдельный файл.

Когда он идет к основному контроллеру, весь функционал работает.

Я не хочу вставлять весь код, поэтому он дает ссылку на гит

https://github.com/SebaKrk/SwipingControllerProgrammatic.git

Картинка с симулятора

1 ответ

Проблема в том, что вы устанавливаете цель прямо в коде установки вашего UIButton

      let previousBotton : UIButton = {
        let button = UIButton(type: .system)
        button.setTitle("PREV", for: .normal)
        button.setTitleColor(.black, for: .normal)
        button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
        button.addTarget(self, action: #selector(handlePreviousButton), for: .touchUpInside)
        return button
    }()

Похоже, selfв этот момент не инициализируется. Поскольку этот код запускается перед вашим initбыл запущен.

Таким образом, вы должны установить targetкнопки после того, как вы позвонили super.initтогда это работает.

Другие вопросы по тегам