Swift5开发Mac端自制浏览器时遇NSButton无clicked成员的Xcode报错
报错核心原因
NSButton 属于macOS开发的Cocoa框架类,在Swift 5的官方API规范中,不存在名为 clicked 的成员属性/方法,这是触发当前编译报错的直接原因。
这类写法一般是和其他框架的按钮API混淆了:比如误把iOS端UIKit的UIButton逻辑、其他语言的按钮事件判断,或是Lua开发中接触过的交互逻辑,套用到了NSButton的实现上。
代码修正方案
你的现有实现存在两个可直接简化的问题:
- 被
@IBAction修饰的方法,仅当绑定的按钮被用户点击触发时,系统才会调用该方法,不需要在方法内部额外判断“按钮是否被点击” - 你当前编写的
if和else分支中,执行的逻辑完全一致,都是调用webView.reload(),这个判断块本身没有实际作用
修正后的可正常运行的代码如下:
@IBAction func didrefreshButtonTapped(_ sender: NSButton) { webView.reload() }
补充:如果需要判断按钮的选中状态
如果你当初编写sender.clicked == 0的判断逻辑,是想实现图片按钮的状态切换(比如普通状态显示刷新图标、选中按下时显示停止加载图标),NSButton 对应的状态判断属性为 state,示例写法参考:
@IBAction func didrefreshButtonTapped(_ sender: NSButton) { // 切换按钮选中状态,用于切换不同的按钮图片 sender.state = (sender.state == .off) ? .on : .off // 执行网页刷新逻辑 webView.reload() }
内容的提问来源于stack exchange,提问作者Joe Powerse
相关产品推荐
相关产品推荐

