【问题标题】:Tap on a text in List and push to other screen(view) swiftUI点击列表中的文本并推送到其他屏幕(视图)swiftUI
【发布时间】:2020-05-18 23:42:56
【问题描述】:
在我看来,我有一个列表,其中最后一项是切换按钮和水平堆栈中的文本。我想在文本的某些部分添加操作(此文本类似于条款和隐私政策)。但是在添加 NavigationLink 以移动到其他屏幕时,它添加了显示指示器,文本和指示器之间的空间很大,并且单击正在整个行上工作。 swiftUI中还有其他选项可以推送到其他屏幕吗?我目前正在使用 Xcode 11.1
var body: some View {
NavigationView {
List {
NavigationLink(destination: TestView()) {
Text("Test")
}
}
}
}
以下是使用 NavigationLink 显示的屏幕截图:
【问题讨论】:
标签:
xcode
swiftui
swiftui-navigationlink
【解决方案1】:
您也可以使用Button。这是我用来使它工作的代码。我还添加了一个图像,当用户返回列表时会发生变化。
struct ContentView: View {
@State var showTestView = false
@State var imageName = "heart"
var body: some View {
List {
HStack{
Image(systemName: imageName)
Button(action: {
self.showTestView.toggle()
}) {
Text("Test")
}
.sheet(isPresented: self.$showTestView) { TestView(showTestView: self.$showTestView, imageName: self.$imageName) }
}
}
}
}
struct TestView: View {
@Binding var showTestView: Bool
@Binding var imageName: String
var body: some View {
VStack{
Button(action: {
self.imageName = "heart.fill"
self.showTestView.toggle()
}) {
Text("Cancel")
}
}
}
}
呈现TestView 时的效果与使用NavigationLink 时会有些不同,但它很有用且有效。
【讨论】:
-
-
推送另一个视图的唯一方法是使用NavigationLink。如果您想要在同一个单元格上使用 2 个NavigationLinks,我发现这个link 可能很有用。