gpt4 book ai didi

ios - SwiftUI List didSelect 就像在 UITableView 中一样

转载 作者:行者123 更新时间:2023-11-28 20:48:32 24 4
gpt4 key购买 nike

我有一个显示国家图片、姓名和电话代码的列表,我想知道选择了哪个国家,例如 UITableView didSelectRowAt indexPath

区域设置信息

struct LocaleInfo: Codable, Identifiable {
let id = UUID()
let name: String
let dialCode: String
let code: String

var flag: UIImage? {
return UIImage(named: "Countries.bundle/Images/\(code.uppercased())", in: Bundle.main, compatibleWith: nil)
}

}

SwiftUI

List(filterLocaleInfo.filter({ $0.name.hasPrefix(search) })) { info in
HStack(alignment: .center) {
Image(uiImage: info.flag ?? UIImage())
VStack(alignment: .leading) {
Text(info.name)
.font(.custom("Avenir-Medium", size: 17))

Text(info.dialCode)
.font(.custom("Avenir-Book", size: 15))
}
}
}
.onAppear { self.getLocaleData() }

最佳答案

SwiftUI 没有 didSelectRowAt 或类似的东西,因为它使用状态而不是用于更改的标准事件处理程序。

您应该定义一个 @State 变量来跟踪当前选择的值:

@State private var selectedLocale: LocaleInfo? = nil

然后使用 init(_:selection:rowContent)构造函数:

List(filterLocaleInfo.filter({ $0.name.hasPrefix(search) }), selection: $selectedLocale) { info in
HStack(alignment: .center) {
Image(uiImage: info.flag ?? UIImage())
VStack(alignment: .leading) {
Text(info.name)
.font(.custom("Avenir-Medium", size: 17))

Text(info.dialCode)
.font(.custom("Avenir-Book", size: 15))
}
}
}
.onAppear { self.getLocaleData() }

变量前的 $ 符号表示您将 @State 变量绑定(bind)到列表的选择值,这意味着 selectedLocale 变量将包含在任何时候当前选择的语言环境,每当这个状态变量改变时,整个 View 都会被重新计算(假设你实际上在其他地方使用这个状态变量 - 例如在 if 语句中)。

关于ios - SwiftUI List didSelect 就像在 UITableView 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com