在NavigationLink中设置editMode时,SwiftUI EditButton()不起作用。
首先,NavigationLink是SwiftUI中用于导航到其他视图的控件。editMode是SwiftUI中用于启用或禁用编辑模式的环境变量。而EditButton()是一个特殊的按钮,它可以自动切换编辑模式。
然而,在某些情况下,如果我们在NavigationLink中设置editMode,并尝试在其中使用EditButton(),可能会发现EditButton()不会自动切换编辑模式。
解决这个问题的方法是手动切换编辑模式,而不是依赖EditButton()。可以通过设置NavigationView中的Toolbar来手动添加编辑按钮。以下是一个示例代码:
struct ContentView: View {
@State private var editMode = EditMode.inactive
var body: some View {
NavigationView {
List {
// 列表内容
}
.navigationBarTitle("列表")
.toolbar {
ToolbarItemGroup(placement: .navigationBarTrailing) {
if editMode == .inactive {
Button(action: {
editMode = .active
}) {
Text("编辑")
}
} else {
Button(action: {
editMode = .inactive
}) {
Text("完成")
}
}
}
}
.environment(\.editMode, $editMode)
}
}
}
在上述代码中,我们通过@State属性包装editMode,将其作为NavigationView的环境变量进行设置。然后,在NavigationView的Toolbar中,根据editMode的值来手动添加“编辑”或“完成”按钮。点击按钮时,手动切换editMode的值,以启用或禁用编辑模式。
需要注意的是,由于我们要手动控制编辑模式,因此我们还需要根据editMode的值对列表进行相应的更新和处理。
这是一个解决在NavigationLink中设置editMode时EditButton()不起作用的方法。希望对你有帮助!如果你想了解更多关于SwiftUI和腾讯云的相关知识和产品,可以访问腾讯云官方网站(https://cloud.tencent.com/)获取更多信息。
领取专属 10元无门槛券
手把手带您无忧上云