列表中的SwiftUI导航链接
我试着做一个列表,里面有图片和导航链接。在iOS 14.1中,一切正常,但在我将iOS更新到14.2之后,有些东西坏了。在列表中,当用户单击大图像时,将弹出一个操作表,当用户单击系统图像时,将触发一个导航链接。但是,当我更新到iOS 14.2时,无论单击什么,它都会触发NavigationLink。有人能给我解释一下为什么会发生这种情况以及如何解决吗 下面是示例代码列表中的SwiftUI导航链接,swiftui,swiftui-list,swiftui-navigationlink,Swiftui,Swiftui List,Swiftui Navigationlink,我试着做一个列表,里面有图片和导航链接。在iOS 14.1中,一切正常,但在我将iOS更新到14.2之后,有些东西坏了。在列表中,当用户单击大图像时,将弹出一个操作表,当用户单击系统图像时,将触发一个导航链接。但是,当我更新到iOS 14.2时,无论单击什么,它都会触发NavigationLink。有人能给我解释一下为什么会发生这种情况以及如何解决吗 下面是示例代码 struct ContentView : View { @State var showingActionShe
struct ContentView : View {
@State var showingActionSheet = false
@State private var action: Int? = 0
var body: some View {
NavigationView {
List{
VStack(alignment: .leading){
HStack{
VStack(alignment: .leading){
Text("my data")
Text("2020/12/12")
}
}
Image("profile")
.resizable()
.aspectRatio(contentMode: .fit)
.onTapGesture(count: 1) {
self.showingActionSheet.toggle()
}
HStack{
Image(systemName: "message")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 25)
.foregroundColor(.gray)
.onTapGesture {
self.action = 1
print("select comment")
}
NavigationLink(destination: Text("test"), tag: 1, selection: $action) {
EmptyView()
}
}
}
.actionSheet(isPresented: $showingActionSheet) {
//action sheet
ActionSheet(title: Text("Test"), message: Text("Select a selection"), buttons: [
.default(Text("test")) { print("test") },
.cancel()
])
}
}
}
}
}
您可以使用
isActive
触发导航链接
@State var isCommentPresented = false
...
Image(systemName: "message")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 25)
.foregroundColor(.gray)
.onTapGesture {
self.isCommentPresented = true
print("select comment")
}
}
NavigationLink(destination: Text("test"), isActive:self.$isCommentPresented) {
EmptyView()
}
尝试以下操作(禁用导航链接会阻止用户在其上进行交互,但会以编程方式将其激活):
HStack{
图像(系统名称:“消息”)
.可调整大小()
.aspectRatio(内容模式:.fit)
.框架(宽度:25)
.foregroundColor(.灰色)
.ontapsigne{
自我行动=1
打印(“选择注释”)
}
NavigationLink(目的地:文本(“测试”),标记:1,选择:$action){
EmptyView()
}.disabled(true)/最重要的原因是使用Zstack。
请在没有ZStack的情况下检查一次,这并没有解决我的问题。其他空间仍将导航到另一个视图。你的答案似乎与我的代码具有相同的结果。也许你可以在iOS 14.2中尝试一下,然后你就会知道。谢谢!这很有效!但是我可以知道为什么在更新到iOS 14.2后出现问题吗?这是一个bug还是什么吗?
HStack{
Image(systemName: "message")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 25)
.foregroundColor(.gray)
.onTapGesture {
self.action = 1
print("select comment")
}
NavigationLink(destination: Text("test"), tag: 1, selection: $action) {
EmptyView()
}.disabled(true) // << here !!
}