我试图在没有NavigationLink的情况下在两个视图之间导航.

Here is the code:


import SwiftUI

struct NextView: View {
    
    @State var text = ""
    @Binding var displayView: Bool
    
    var body: some View {
        // 3
        //NavigationView {
            VStack {
                Spacer()
                TextField("Type something!", text: $text)
                Button("Remove View") {
                    withAnimation {
                        displayView = false
                    }
                }
                Spacer()
            }.background(Color.cyan)
        //}
    }
}

struct InitialView: View {
    
    @State var displayView = false
    
    var body: some View {
        // 1
        //NavigationView {
            if displayView {
                //2
                //NavigationView {
                    NextView(displayView: $displayView)
                        .transition(.slide)
                
                //}
            } else {
                Button("Tap to continue") {
                    withAnimation {
                        displayView = true
                    }
                }
            }
        //}
    }
}

我试着把NavigationView个放在3个不同的地方,一次一个.我只通过将 struct 放置在位置3或不使用它来获得我想要的动画.有谁能告诉我为什么会发生这种情况,以及使用位置1中的NavigationView的其他可能的解决方案吗?

我只在iPhone 12模拟器中进行了测试,我使用的是XCode 13.4.1版本.

推荐答案

我想你只是想要这个动画化的过渡

struct InitialView: View {

    @State var displayView = false

    var body: some View {
        NavigationView {   // << just root view, not important
            ZStack {                  // << owner container !!
                if displayView {
                    NextView(displayView: $displayView)
                        .transition(.slide)
                } else {
                    Button("Tap to continue") {
                        displayView = true
                    }
                }
            }
            .animation(.default, value: displayView)   // << animation !!
        }
    }
}

使用Xcode 13.4/iOS 15.5测试

Ios相关问答推荐

更新Flutter项目时出错:CocoaPods找不到pod webview_flutter_wkwebview的兼容版本""

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

IOS-获取本地化系统映像

Xcode 15阻止我的应用程序运行:由于实时模式录制的高比率,丢失了1条日志(log)/路标消息?

Xcode 15模拟器用x86_64编译

如何在SwiftUI中实现淡入淡出加粘标题屏幕效果

在视图控制器中实例化视图控制器是否可能/智能?

添加到单个自定义视图时,Swiftui 项目会在所有视图中重复

如何将单个按钮传递到自定义 ConfirmationDialog

.overlay 和 body 是什么 swift 概念

使用 CIImage 支持的 UIImage 设置 UIImageView 时发生罕见的崩溃

Xcode intellisense 彩色框中字母的含义,如 f、T、C、M、P、C、K、# 等

关闭所有打开的视图控制器的单个函数

没有 Mac 的 Xamarin Visual Studio IOS 开发?

Swift:调用中缺少参数标签xxx

iOS:设备旋转后如何运行函数(Swift)

判断从 JSON 字符串返回的 Objective-C 中的空值

测试目标 X 遇到错误(提前意外退出,操作从未完成 bootstrap - 不会try 重新启动

UITableView:从空白部分隐藏标题

UIView 中的 safeAreaInsets 在 iPhone X 上为 0