swift - 参数类型(字符串)->()的问题-SwiftUI
问题描述
当我运行函数 RadioButtonGroups 时出现以下错误 - 'nil' 与预期的参数类型 '(String) -> ()' 不兼容我该如何解决?
我如何运行 - RadioButtonGroups.init(callback: nil, selectedId: "")
下面是 RadioButtonGroups 的代码
enum TypeOfSale: String {
case sale = "Sale"
case change = "Change"
}
struct RadioButtonGroups: View {
let callback: (String) -> ()
@State var selectedId: String = ""
var body: some View {
HStack {
radioSaleMajority
radioChangeMajority
}
}
var radioSaleMajority: some View {
RadioButtonField(
id: TypeOfSale.sale.rawValue,
label: TypeOfSale.sale.rawValue,
isMarked: selectedId == TypeOfSale.sale.rawValue ? true : false,
callback: radioGroupCallback
)
}
var radioChangeMajority: some View {
RadioButtonField(
id: TypeOfSale.change.rawValue,
label: TypeOfSale.change.rawValue,
isMarked: selectedId == TypeOfSale.change.rawValue ? true : false,
callback: radioGroupCallback
)
}
func radioGroupCallback(id: String) {
selectedId = id
callback(id)
}
}
解决方案
定义默认值,例如
struct RadioButtonGroups: View {
var callback: (String) -> () = { _ in }
// ...
现在可以将其用作
RadioButtonGroups(selectedId: "")
推荐阅读
- javascript - 在用户选择至少一个复选框之前,如何设置下一个按钮不可用?
- vba - 允许在 MS Access 表单的文本框中添加数据但不允许删除数据
- android - Android TV:如何添加密码操作
- javascript - 无法读取 null 的属性“getSheetId”;不知道为什么会这样
- asp.net - 如何使用 axios 将文件上传 POST 到 ASP.NET 控制器?
- azure - 带有性能计数器的 Azure Service Fabric 上的 Azure Application Insights
- c++ - C++ ELF 目标文件符号表具有两次列出的函数
- ruby-on-rails - Puma MiniSSL SSLError 运行 rails 服务器时出现 OpenSSL 错误
- rxjs - withLatestFrom 意外行为
- python - Sharepoint 使用 shareplum 库插入