You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建函数数组?实现按钮点击仅触发对应单个函数

解决按钮点击时才触发对应函数的问题

你的问题出在数组存储的是函数执行后的结果,而非函数本身。当你写a()时,代码会立即执行这个函数并把返回值(这里是空元组())存入数组,所以初始化数组时a()和b()就被调用了。

修改方案:

  • 将数组类型改为存储无参无返回值的函数类型 [() -> Void],用来保存函数引用
  • 数组中直接写入函数名a、b(不要加括号,加括号会立即执行)
  • 按钮点击时,取出数组中的函数并调用(加括号执行)

修改后的完整代码:

func a() {
    print("a")
}

func b() {
    print("b")
}

// 存储函数引用的数组
let arrayOfActions: [() -> Void] = [a, b]

@objc func buttonAction(sender: UIButton!) {
    // 根据tag取出函数并执行
    arrayOfActions[sender.tag - 1]()
}

这样修改后,只有当按钮被点击时,才会根据对应的tag取出函数并触发执行,初始化数组时不会再提前调用a()和b()。

内容的提问来源于stack exchange,提问作者user25462420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:52:36