Listview SwiftUI列表视图列表中不可选择的行

Listview SwiftUI列表视图列表中不可选择的行,listview,navigation,swiftui,Listview,Navigation,Swiftui,在我最新的SwuiftUI应用程序中,根据选择的选项,将创建三个不同列表视图中的一个。三个可能列表中的每一个都包含显示时的所有行。但是,对于所有三个列表,前四行中没有一行“可选择”以导航到详图视图。其余所有行都是可选择的,可以正确导航到详图视图 以下是相关代码: struct Accounts: View { init(){ UITableView.appearance().backgroundColor = .clear UITableViewCell

在我最新的SwuiftUI应用程序中,根据选择的选项,将创建三个不同列表视图中的一个。三个可能列表中的每一个都包含显示时的所有行。但是,对于所有三个列表,前四行中没有一行“可选择”以导航到详图视图。其余所有行都是可选择的,可以正确导航到详图视图

以下是相关代码:

struct Accounts: View {

    init(){
        UITableView.appearance().backgroundColor = .clear
        UITableViewCell.appearance().backgroundColor = .clear
        UITableView.appearance().tableFooterView = UIView()
    }

    // MARK: - Propertiers
    @Environment(\.presentationMode) var presentation

    @State private var accounts = ["New Account", "Account 1", "
Account 2", "Account 3", "Account 4", "Account 5", "Account 6"] // placeholder data

    var body: some View {

        NavigationView {

            ZStack {

                BackgroundView(majorColorR: 255, majorColorG: 255, majorColorB: 255, minorColorR: 204, minorColorG: 0, minorColorB: 0)

                VStack {

                    AppTitle()

                    List(accounts, id: \.self) { account in
                        NavigationLink(destination: ShowAccount(account: account)) {
                           Text("\(account)")
                           .font(.headline)
                           .foregroundColor(.black)
                       }
                    }

                    Spacer()


                    Button(action: {
                        self.presentation.wrappedValue.dismiss()
                    }) {
                        Text("Return to Main Menu")
                        .font(.headline)
                        .foregroundColor(.white)
                        .padding()
                        .frame(width: 300, height: 50)
                        .overlay(
                            RoundedRectangle(cornerRadius: 15)
                                .stroke(Color.black, lineWidth: 3)
                        )
                    }.padding(.bottom, 50)

                    Spacer()

                }.edgesIgnoringSafeArea(.all)
            }
        }.navigationBarBackButtonHidden(true)
    }

}

尝试运行此示例

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("A")
            List {
                NavigationLink(destination: Text("alfa")) {
                    Text("row alfa")
                }
                NavigationLink(destination: Text("beta")) {
                    Text("row beta")
                }
                NavigationLink(destination: Text("gama")) {
                    Text("row gama")

                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
预期的结果是什么?如果你回答它是屏幕上的单个文本A在中间,你是正确的! 旋转设备,您会看到


您的布局“复杂”,可能对代码进行一些小的重新排列会有所帮助。。。但我建议你从头重写

无任何代码。。。也许一些透视法可以帮助你我已经发布了代码,但我认为它与代码无关,因为列表中正确填充了所有条目。因此,每个条目都应该由SwiftUI“选择”激活,无需额外代码。然而,只有第五个及以上条目处于“选择”活动状态。代码中存在许多潜在问题。作为“急救员”,请移除.edgesIgnoringSafeArea(.all)并重试。谢谢。删除.edgesIgnoringSafeArea(.all)确实导致了所有列表行的可选择性。但是,整个视图现在似乎都将其“顶部”放在屏幕中央。添加或移动底部垫片的位置没有帮助,即使文档中说底部垫片会将所有东西推到顶部。请参阅我的答案。。。重写它并遵循一些已知的模式。