【发布时间】:2021-01-27 14:03:11
【问题描述】:
我一直试图在 swift 中为我的应用程序创建一个菜单项,并通过按菜单上的不同按钮来运行不同的 python 脚本。我对 Swift 很陌生,我猜这里缺少一个简单的机制。
现在的问题是我正在尝试创建一个按钮,按下它时会运行一个动作。 函数调用位于 Toolbar 中,而 Toolbar 本身位于 NavigationView 中:
ToolbarItem {
Menu {
Button("Label", action: myFunc("My string"))
} label: {
Label("Scripts", systemImage: "applescript")
}
}
myFunc函数在哪里是这样的:
func myFunc(_ param: String) -> Void {
print(param)
}
(整数只是后面值的占位符,它对应于我要运行的脚本的路径)
错误是:
Cannot convert value of type 'Void' to expected argument type '() -> Void'
奇怪的是,当我在函数调用中排除参数时,比如调用a:
func myFunc() {
print("Hello")
}
从同一位置,它工作得很好。按钮是否有限制,例如无法向其函数发送参数?
我查看了不同的解决方案,但对于这个错误来说,它们似乎都太复杂了。由于视图为空,我看到了一个指南,但这似乎不是手头的错误。
按钮的数量稍后将在 ForEach 中。然而,对于存储脚本路径的最佳方式是什么,我有点矛盾。我一直在考虑用不同的路径作为 rawValues 进行枚举。但是我想要按钮的标签与文件的实际路径不同,所以我需要存储在 rawValues 中的两个值,这可能吗?就像使用字典并使用名称作为键和值作为路径一样。或者你有什么更好的方法来解决这个问题?
我非常愿意接受建议,目标只是能够通过菜单中的按钮运行脚本!
【问题讨论】:
标签: swift compiler-errors swiftui