如何通过单击按钮从 Swift UI 中的一个视图导航到另一个视图
How to navigate from one view to another in Swift UI on a click of button
我想在 SwiftUI 中通过单击按钮从一个视图推送到另一个视图。同样,我们在故事板中从一个控制器导航到另一个控制器。
但是在SwiftUI中如何实现呢
有两种方法可以实现。
第一个是 "isActive" 绑定。
struct ViewA: View {
@State private var isActive = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: NextView(),
isActive: $isActive) {
Button(action: {
self.isActive = true
}) {
Text("Push Next View")
}
}
}
}
}
}
您将要推送的视图放在 NavigationLink 的目的地。
第二种方法也是使用 NavigationLink,但使用 "tag" 和 "selection"。 There the navigation is activated when the selection matches the tag.
可以使用导航解决Link
什么是导航Link?
导航Link:在每个单元格的右侧创建一个按钮并触发显示到详细视图
苹果Link:
https://developer.apple.com/documentation/swiftui/navigationlink
示例项目
苹果
https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
Github
https://github.com/appbrewery/H4X0R-News-iOS13-SwiftUI-Completed
如何实施:
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
*注意:"LandmarkDetail" 是您的目标视图。
你也可以从apple(link上面提到的)下载sample project,看得清楚
我想在 SwiftUI 中通过单击按钮从一个视图推送到另一个视图。同样,我们在故事板中从一个控制器导航到另一个控制器。
但是在SwiftUI中如何实现呢
有两种方法可以实现。
第一个是 "isActive" 绑定。
struct ViewA: View {
@State private var isActive = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: NextView(),
isActive: $isActive) {
Button(action: {
self.isActive = true
}) {
Text("Push Next View")
}
}
}
}
}
}
您将要推送的视图放在 NavigationLink 的目的地。 第二种方法也是使用 NavigationLink,但使用 "tag" 和 "selection"。 There the navigation is activated when the selection matches the tag.
可以使用导航解决Link
什么是导航Link?
导航Link:在每个单元格的右侧创建一个按钮并触发显示到详细视图
苹果Link: https://developer.apple.com/documentation/swiftui/navigationlink
示例项目
苹果 https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
Github https://github.com/appbrewery/H4X0R-News-iOS13-SwiftUI-Completed
如何实施:
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
*注意:"LandmarkDetail" 是您的目标视图。
你也可以从apple(link上面提到的)下载sample project,看得清楚