0

我创建了 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")
}

我想将整个页面管理栏添加到一个单独的文件中。

当它进入主控制器时,整个功能都会起作用。

我不想粘贴所有代码,所以它提供了 git 的链接

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

图片来自模拟器

4

1 回答 1

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在调用之后设置 Button ,super.init然后它才能工作。

于 2020-12-20T09:24:04.883 回答