从目标视图返回时,SwiftUI NavigationLink显示为突出显示

时间:2020-10-06 20:54:34

标签: swift swiftui swiftui-navigationlink

我在NavigationLink内有一个Form(截图1)。当我单击时,导航将转到详细信息页面(屏幕截图2)。当我使用“后退”按钮或滑动手势返回时,NavigationLink变为突出显示状态(屏幕截图3)。

请参阅下面的代码。

如何解决此问题? 谢谢。

screenshot 1 screenshot 2 screenshot 3

首页(第一个导航链接所在的位置):

NavigationView {
                    // Content
                    VStack {
                        // Navigation to profileview
                        NavigationLink(destination: ProfileView(showing: self.$profileClicked).environmentObject(self.user),
                                       isActive: self.$profileClicked) {}
                    }
                    .navigationBarTitleDisplayMode(.inline)
                    .toolbar {
                        ToolbarItem(placement: .navigationBarTrailing) {
                            Button(action: {self.profileClicked.toggle()}) {
                                Image(systemName: "person.circle.fill")
                            }
                        }
                    }
                }

个人资料视图(屏幕截图1):

VStack {
        
        // ...
        
        List {
            Section {
                NavigationLink(destination: AccountInfoView().environmentObject(self.user)) {
                    HStack {
                        Image(systemName: "person.fill")
                            .foregroundColor(Color("main"))
                        Text("Account information")
                    }
                }
            }
        }
        
        Spacer()
        
        // ...
    }
    .navigationTitle("Profile")
}

帐户查看(第二张屏幕截图)

var body: some View {
    VStack {
        Form {
            HStack {
                Text("ID:")
                    .padding(8)
                Spacer()
                Text(self.user.id)
                    .foregroundColor(Color.gray)
                    .font(.system(size: 13))
                    .lineLimit(1)
            }
            HStack {
                Text("Email:")
                    .padding(8)
                Spacer()
                Text(self.user.email)
                    .foregroundColor(Color.gray)
                    .lineLimit(1)
            }
        }
    }
    .navigationTitle("Account")
}

2 个答案:

答案 0 :(得分:0)

只需在.onAppear上添加List并将selectionStyle设置为none

List{}.onAppear {
  UITableViewCell.appearance().selectionStyle = .none
}

确保将所有内容包装在NavigationView

答案 1 :(得分:0)

我们观察到相同的问题。如果将列表添加到VStack中,则无法取消突出显示单元格。

以下代码段无法在iOS 14上运行。

  UITableViewCell.appearance().selectionStyle = .none

我们能够修复它的方法是使用LazyVStack。

我们从层次结构VStack->List迁移到VStack->ScrollView->LazyVStack->ForEach