swift - SwiftUI 按钮作为 EditButton
问题描述
我如何使用像这样的按钮EditButton
?
或者我如何使用按钮从列表中激活编辑模式?
或者我如何从EditButton
“编辑”/“完成”更改名称?
解决方案
下面的实现将EditButton
's 的功能替换为Button
:
import SwiftUI
struct ContentView: View {
@State var isEditing = false
@State var selection = Set<String>()
var names = ["Karl", "Hans", "Faustao"]
var body: some View {
NavigationView {
VStack {
List(names, id: \.self, selection: $selection) { name in
Text(name)
}
.navigationBarTitle("Names")
.environment(\.editMode, .constant(self.isEditing ? EditMode.active : EditMode.inactive)).animation(Animation.spring())
Button(action: {
self.isEditing.toggle()
}) {
Text(isEditing ? "Done" : "Edit")
.frame(width: 80, height: 40)
}
.background(Color.yellow)
}
.padding(.bottom)
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
结果
但是,通过这样做,选择处理需要由我们自己来实现(这可能是也可能不是问题)。
不幸的是,此时没有太多文档: https ://developer.apple.com/documentation/swiftui/list/3367016-init
推荐阅读
- css - 防止 flex 容器溢出视口
- scrapy - Scrapy 提取特定数据
- android - 通过主活动 FAB 按钮 onClickListener 保存片段 EditText 内容
- rust - 别名可变原始指针 (*mut T) 会导致未定义的行为吗?
- html2canvas - 在 html2canvas/jspdf 中添加边距
- python - 无法通过 tensorflowjs model() 加载本地模型
- javascript - 在 JavaScript/Web Audio Api 中播放数字序列作为声音
- javascript - 使用 array.prototype.filter() 方法根据来自另一个数组的参数进行过滤
- javascript - 加载动态 Javascript 内容后跳转到最后一个滚动位置
- javascript - 在我的倒计时时钟上获取 NaN 而不是数字?