Ios 在UITableView中选择类似的快捷菜单列表
我有一个显示国家图像、姓名和电话号码的列表,我想知道选择了哪个国家,比如在UITableViewIos 在UITableView中选择类似的快捷菜单列表,ios,swiftui,Ios,Swiftui,我有一个显示国家图像、姓名和电话号码的列表,我想知道选择了哪个国家,比如在UITableViewdidSelectRowAt indexPath LocaleInfo struct LocaleInfo: Codable, Identifiable { let id = UUID() let name: String let dialCode: String let code: String var flag: UIImage? { re
didSelectRowAt indexPath
LocaleInfo
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
然后使用构造函数:
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
变量绑定到列表的选择值,这意味着selectedLocale
变量将始终包含当前选择的区域设置,并且每当此状态变量更改时,将重新计算整个视图(假设您实际上在其他地方使用此状态变量,例如在if
语句中)。SwiftUI没有didSelectRowAt或任何类似的命令,因为它使用状态而不是标准事件处理程序进行更改
您应该定义一个@State
变量,该变量将跟踪当前选定的值:
@State private var selectedLocale: LocaleInfo? = nil
然后使用构造函数:
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
变量绑定到列表的选择值,这意味着selectedLocale
变量将始终包含当前选择的区域设置,并且每当此状态变量更改时,将重新计算整个视图(假设您实际在其他地方使用此状态变量,例如在if
语句中)。当我尝试此方法时,@state
值保持nil
,即使在选择时?当我尝试此方法时,@state
值保持nil
,即使在选择时?