如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图

Posted

技术标签:

【中文标题】如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图【英文标题】:How to navigate from one view to another in Swift UI on a click of button 【发布时间】:2019-11-21 05:45:03 【问题描述】:

我想通过单击按钮在 SwiftUI 中从一个视图推送到另一个视图。同样,我们在情节提要中从一个控制器导航到另一个控制器。

但在 SwiftUI 中如何实现这一点。

【问题讨论】:

【参考方案1】:

您可以使用 NavigationLink 解决它

什么是 NavigationLink?

NavigationLink:在每个单元格的右侧创建一个按钮并触发显示到详细视图

苹果链接: 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”是您的目标视图。

您也可以从苹果下载示例项目(上面提到的链接)以清楚地理解它

【讨论】:

【参考方案2】:

有两种方法可以实现。

第一个是“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,但使用“标签”和“选择”。选择匹配标记时,将激活导航。

【讨论】:

这是我的代码: Button(action: NavigationLink(destination: TableView()) Text("Show Detail View") .navigationBarTitle("Navigation") ) Text("Navigate ") .font(.title) .fontWeight(.medium) .foregroundColor(Color.green).background(Color.purple)

以上是关于如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift UI 中单击按钮时从 swift UI 导航到情节提要?

Swift:如何通过单击按钮 UITableVieCell 创建 UIActionSheet

SWIFT:如何通过单击保存按钮在现有子项上添加键值?

Swift 3:在 ViewDidLoad 中从服务器获取信息,当单击按钮时,等待服务器的信息响应

在 Swift 中从 TableView 拖放到另一个视图

如何通过单击按钮转到另一个视图