如何使SwiftUI NavigationLink在编辑模式下工作?
我有一份物品清单。单击其中一个应将新视图推送到导航堆栈。我注意到,如果列表处于编辑模式,则导航链接不起作用。有办法控制吗?我需要它在编辑模式下工作如何使SwiftUI NavigationLink在编辑模式下工作?,swiftui,navigationlink,Swiftui,Navigationlink,我有一份物品清单。单击其中一个应将新视图推送到导航堆栈。我注意到,如果列表处于编辑模式,则导航链接不起作用。有办法控制吗?我需要它在编辑模式下工作 List { ForEach(segments) { segment in NavigationLink(destination: EditSegmentView(segment: segment)) { Text(segment.title) } }.onDelete(perf
List {
ForEach(segments) { segment in
NavigationLink(destination: EditSegmentView(segment: segment)) {
Text(segment.title)
}
}.onDelete(perform: onDelete)
.onMove(perform: onMove)
}.environment(\.editMode, $alwaysTrue)
我现在已经按照我想要的方式工作了。我使用了一个不同的
NavigationLink
初始值设定项,带有tag
和selection
参数。它似乎工作得很好,但我不知道这是否是初始值设定项的预期用途,因为文档非常稀少
@State var segmentSelection: Segment.ID? = nil
var body: some View {
NavigationView {
...
List {
ForEach(workout.segments) { segment in
NavigationLink(destination: EditSegmentView(segment: segment),
tag: segment.id,
selection: self.$segmentSelection) {
Text(segment.title)
}
.onTapGesture(perform: { self.segmentSelection = segment.id })
}.onDelete(perform: onDelete)
.onMove(perform: onMove)
}.environment(\.editMode, Binding.constant(.active))
...
}
}
链接未在编辑模式下工作是预期行为。如果您从用户的角度想象,他们可能不想编辑列表,而无意中导航到他们正在编辑的项目之一。通过将其保持在编辑模式,您实际想要实现的目标是什么?我正在编辑训练中的练习列表。您可以在列表中添加/删除/移动练习,也可以向下钻取以编辑我从UITableView代码移植的特定练习(更改其名称、持续时间等)。我以前以为用户界面还不错。“删除”按钮和“移动”手柄与触发“导航”的“名称”文本是分开的。可以说,您在试图激活编辑模式和允许导航的过程中,正在向上游奋战。你应该找到一种新的方法来实现所需的UI。我将不得不考虑如何重新设计我的应用程序,使其能够像那样工作,但现在我只想将部分应用程序移植到SwiftUI,如果可以的话。我可以接受UI框架的引导,但如果SwiftUI过于严格,我可能不喜欢它。现在,我有一些工作,我只是在一个答案中发布。我不认为这是预期的行为。苹果iOS中的联系人应用程序实现了Rob N试图实现的功能,这一行与选择和标记初始值设定器一起实现了这一功能:.ontapsignature(执行:{self.segmentSelection=segment.id})。也可以使用它来制作自定义选择器。谢谢