相关疑难解决方法(0)

SwiftUI NavigationLink 自行弹出

我有一个简单的用例,其中一个屏幕使用NavigationLink. iOS 14.5 beta (1, 2, 3) 有一个奇怪的行为,推送的屏幕在被推送后就弹出。

我设法创建了一个示例应用程序,并在其中重现它。我相信原因是存在@Environment(\.presentationMode)似乎重新创建视图并导致弹出视图的原因。

完全相同的 cod 在 Xcode 12 / iOS 14.4 中运行良好

在此处输入图片说明

这是一个示例代码。

import SwiftUI

public struct FirstScreen: View {
    public init() {}
    public var body: some View {
        NavigationView {
            List {
                row
                row
                row
            }
        }
    }
    private var row: some View {
        NavigationLink(destination: SecondScreen()) {
            Text("Row")
        }
    }
}

struct SecondScreen: View {

    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

    public var body: some View {
        VStack(spacing: 10) {
            NavigationLink(destination: …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-navigationlink

7
推荐指数
4
解决办法
1047
查看次数

SwiftUI NavigationLink 控制台错误(SwiftUI 在推送 aNavigationLink 时遇到问题。请提交错误。)

尝试以编程方式触发导航链接时遇到上述错误的问题。单击链接后,错误的目标数组元素将偶尔加载(相对于单击的标签),当然会显示上述错误。

当我以非编程方式触发导航链接时,不会发生错误,但当用户单击此链接时,我需要运行另一种方法。

我已经阅读了几个问题,例如此处此处,但找不到我的案例的原因。

模型结构:

struct Place: Identifiable {
var id: UUID = UUID()
var name: String = ""
var testBool: Bool = false
Run Code Online (Sandbox Code Playgroud)

}

环境对象的类:(生产项目有许多属性和方法 - 本质上这是 ViewModel)

class UserPlaces: ObservableObject {
@Published var placesArray: [Place] = [Place]([Place(name: "Christian", testBool: false),Place(name: "Catherine", testBool: true)])
Run Code Online (Sandbox Code Playgroud)

}

导航布尔类:(生产项目这里有许多属性,我想将它们保留在一个类中)

class Navigation: ObservableObject {
@Published var showPlaceDetail: Bool = false
Run Code Online (Sandbox Code Playgroud)

}

ContentView:(NavigationView所在的父视图)

import SwiftUI
Run Code Online (Sandbox Code Playgroud)

结构ContentView:视图{

var body: some View {
    
    NavigationView {
        
        ScrollView {
            
            Text("Hello, world!")
                .padding()
            CardsGrid2()
            
        } // …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-navigationlink

3
推荐指数
1
解决办法
1873
查看次数

标签 统计

swiftui ×2

swiftui-navigationlink ×2