【发布时间】:2021-03-02 02:25:59
【问题描述】:
当我在 iOS 版 SwiftUI 中的 NavigationLink 上使用 .simultaneousGesture(TapGesture().onEnded{ //code to run }) 时,代码运行良好并且链接打开。
但是,如果NavigationLink 位于List 中,则代码会运行但链接不会打开。
还有其他方法可以运行一些代码之后 List NavigationLink 被点击,但之前 TextEditor 出现?
在TextEditor 上使用.onAppear 是不合适的,因为我需要在TextEditor 出现之前运行代码 - 部分原因是TextEditor 重新渲染的错误,部分原因是为了让事情在正确的顺序。
复制问题的代码:
import SwiftUI
struct ContentView: View {
@State private var textString = ""
@State private var listMembers = ["Link A", "Link B", "Link C"]
var body: some View {
NavigationView {
VStack {
List(listMembers, id: \.self) { member in
NavigationLink(member, destination: TextEditor(text: $textString))
.simultaneousGesture(TapGesture().onEnded {
textString = "Link A, B, or C was tapped."
print(textString)
})
}
NavigationLink("Link D", destination: TextEditor(text: $textString))
.simultaneousGesture(TapGesture().onEnded {
textString = "Link D was tapped."
})
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
谢谢!
【问题讨论】:
标签: ios swift swiftui swiftui-list swiftui-navigationlink