Swift Playground中如何为按钮添加创建视图的点击事件?
帮你修复按钮点击创建视图的问题
嘿,我看到你在给按钮添加点击创建视图的功能时遇到了小问题,咱们来一步步修正它~
你的代码里存在的几个问题:
- 在
viewDidLoad方法内部嵌套定义Button类完全没必要,这会打乱代码逻辑,还导致点击事件无法正确关联 - 没有给按钮绑定点击事件的逻辑,所以点击按钮不会有任何响应
- 新视图的代码未完成,缺少布局和添加到视图层级的关键步骤
修正后的完整代码:
import UIKit import PlaygroundSupport class ViewController : UIViewController { override func viewDidLoad() { super.viewDidLoad() // 必须调用父类的viewDidLoad方法 view.backgroundColor = .black navigationController?.isNavigationBarHidden = true // 创建按钮并调整位置到屏幕中心 let button = UIButton(frame: CGRect(x: view.center.x - 50, y: view.center.y - 25, width: 100, height: 50)) button.backgroundColor = .white button.setTitle("创建视图", for: .normal) // 给按钮添加标题,方便识别 button.setTitleColor(.black, for: .normal) // 绑定点击事件:点击按钮时触发createNewView方法 button.addTarget(self, action: #selector(createNewView), for: .touchUpInside) view.addSubview(button) } // 按钮点击触发的方法,用@objc标记让OC运行时能够识别 @objc func createNewView() { // 创建新视图并设置布局 let newView = UIView(frame: CGRect(x: 50, y: 100, width: 200, height: 200)) newView.backgroundColor = .systemBlue // 设置背景色,方便看到新视图 view.addSubview(newView) // 将新视图添加到当前控制器的视图层级中 } } // 让Playground展示当前控制器的界面 PlaygroundPage.current.liveView = ViewController()
关键修改说明:
- 移除了嵌套的
Button类,把点击事件方法直接放在ViewController类中,逻辑更清晰 - 给按钮添加了标题和位置调整,让按钮更易识别和操作
- 通过
button.addTarget(_:action:for:)完成点击事件的绑定,指定触发的方法 - 完善了
createNewView方法,给新视图设置了可见的样式并添加到视图中 - 补充了
super.viewDidLoad()和Playground展示的代码,保证界面能正常运行
内容的提问来源于stack exchange,提问作者Grazia Bo
相关产品推荐
相关产品推荐

