【发布时间】:2021-02-07 08:24:01
【问题描述】:
我尝试列出来自字符串数组的可编辑字符串和可删除字符串。
struct ShortcutSettingView: View {
@State var keywords: [String] = ["keyword 1", "keyword 2", "keyword 3"]
var body: some View {
Form {
List {
ForEach(keywords, id: \.self) { keyword in
TextField("", text: $keywords[keywords.firstIndex(of: keyword)!)
}
.onDelete(perform: deleteKeywords)
}
}
.navigationTitle(Text("Generic Shortcut"))
}
private func deleteKeywords(_ offsets: IndexSet) {
keywords.remove(atOffsets: offsets)
}
}
我尝试了以下方法,但遇到了以下两个问题:
- 在任何
TextFields 中键入一个字母后键盘消失(我认为这是由刷新视图引起的) - 在删除过程中出现索引超出范围错误
我可以通过以下更新修复 #2
TextField("", text: Binding<String>(get: {keywords[keywords.firstIndex(of: keyword)!] ?? "<error>"}, set: {keywords[keywords.firstIndex(of: keyword)] = $0}))
但由于键盘消失问题 (#1),文本字段仍无法按预期使用。
【问题讨论】: