Swift - SwipingController 程序化 - 按钮不起作用
Swift - SwipingController Programmatic - button doesn't work
我创建了 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")
}
我想在一个单独的文件中添加整个页面管理栏。
当它转到主控制器时,整个功能都起作用了。
我不想粘贴所有代码,所以它给了一个 link 到 git
https://github.com/SebaKrk/SwipingControllerProgrammatic.git
Picture from simulator
问题是您在 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
是 运行。
所以你必须在调用super.init
之后设置按钮的target
才能起作用。
我创建了 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")
}
我想在一个单独的文件中添加整个页面管理栏。
当它转到主控制器时,整个功能都起作用了。
我不想粘贴所有代码,所以它给了一个 link 到 git
https://github.com/SebaKrk/SwipingControllerProgrammatic.git
Picture from simulator
问题是您在 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
是 运行。
所以你必须在调用super.init
之后设置按钮的target
才能起作用。