SWIFTUI 按钮或 NavigationLink?

Posted

技术标签:

【中文标题】SWIFTUI 按钮或 NavigationLink?【英文标题】:SWIFTUI Button or NavigationLink? 【发布时间】:2021-03-26 05:39:01 【问题描述】:

我有一个名为“保存”的按钮,用于保存用户输入。 但是,我想让它像,如果用户点击按钮“保存”,那么屏幕会自动返回到上一个视图。我可以通过向 Button 中的操作添加代码来做到这一点吗?还是我必须使用 NavigationLink 而不是 Button?

 Button(action: 
                let title = shortcutTitle
                currentShortcutTitle = title
                UserDefaults.standard.set(title, forKey: "title")
            , label: 
                Text("Save")
                    .padding()
                    .frame(width: 120, height: 80)
                    .border(Color.black)
            ) //: Button - save

【问题讨论】:

【参考方案1】:

如果您只是想返回上一个视图并且已经在NavigationView 堆栈中,您可以使用@Environment(\.presentationMode)

struct ContentView: View 
    
    var body: some View 
        NavigationView 
            NavigationLink(destination: Screen2()) 
                Text("Go to screen 2")
            
        .navigationViewStyle(StackNavigationViewStyle())
    


struct Screen2 : View 
    @Environment(\.presentationMode) var presentationMode  //<-- Here

    var body: some View 
        Button("Dismiss") 
            presentationMode.wrappedValue.dismiss() //<-- Here
        
    

【讨论】:

以上是关于SWIFTUI 按钮或 NavigationLink?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SwiftUI 列表删除按钮工作? (或消失)

SwiftUI:如何更改用户按住导航链接或按钮等内容时发生的颜色变化?

使用个人图像创建 SwiftUI 按钮

Mac 上的 SwiftUI - 如何将按钮指定为主按钮?

自定义按钮样式 (SwiftUI) tvOS

SwiftUI 按钮大小/形状/颜色不变