Listview SwiftUI列表视图列表中不可选择的行
在我最新的SwuiftUI应用程序中,根据选择的选项,将创建三个不同列表视图中的一个。三个可能列表中的每一个都包含显示时的所有行。但是,对于所有三个列表,前四行中没有一行“可选择”以导航到详图视图。其余所有行都是可选择的,可以正确导航到详图视图 以下是相关代码:Listview SwiftUI列表视图列表中不可选择的行,listview,navigation,swiftui,Listview,Navigation,Swiftui,在我最新的SwuiftUI应用程序中,根据选择的选项,将创建三个不同列表视图中的一个。三个可能列表中的每一个都包含显示时的所有行。但是,对于所有三个列表,前四行中没有一行“可选择”以导航到详图视图。其余所有行都是可选择的,可以正确导航到详图视图 以下是相关代码: struct Accounts: View { init(){ UITableView.appearance().backgroundColor = .clear UITableViewCell
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)确实导致了所有列表行的可选择性。但是,整个视图现在似乎都将其“顶部”放在屏幕中央。添加或移动底部垫片的位置没有帮助,即使文档中说底部垫片会将所有东西推到顶部。请参阅我的答案。。。重写它并遵循一些已知的模式。