Xcode 13.1 中的导航链接问题 -- 空白而不是链接?
Navigationlink question in Xcode 13.1 -- Blanks instead of links?
抱歉新手问题,但我一直在想为什么 Navigationlink 根本不产生 link。 Xcode 编译,但新视图的 link 所在的位置为空白。这个特定的视图是来自 ContentView 的视图 3,因此结构是 ContentView -> 视图 2 -> 视图 3(试图 link 到视图 4)。
struct MidnightView: View {
var hourItem: HoursItems
@State var showPreferencesView = false
@State var chosenVersion: Int = 0
@State var isPsalmsExpanded: Bool = false
@State var showLXX: Bool = false
var body: some View {
ScrollView (.vertical) {
VStack (alignment: .center) {
Group {
Text (hourItem.hourDescription)
.font(.headline)
Text ("Introduction to the \(hourItem.hourName)")
.font(.headline)
.bold()
.frame(maxWidth: .infinity, alignment: .center)
ForEach (tenthenou, id: \.self) {
Text ("\([=11=])")
Text ("\(doxasi)")
.italic()
}
}
.padding()
NavigationView {
List {
ForEach (midnightHours, id:\.id) {watch in
NavigationLink ("The \(watch.watchName)", destination: MidnightWatchView (midnightItem: watch, chosenVersion: self.chosenVersion, isPsalmsExpanded: self.isPsalmsExpanded, showLXX: self.showLXX))
}
}
}
Group {
Text ("Absolution of the \(hourItem.hourName)")
.font(.headline)
Text (absolutionTexts[(hourItem.hourName)] ?? " ")
Divider()
Text ("Conclusion of Every Hour")
.font(.headline)
Text (hourConclusion)
Divider()
Text (ourFather)
}
.padding()
}
}
.navigationBarTitle ("The Midnight Hour", displayMode: .automatic)
.navigationBarItems (trailing: Button (action: {self.showPreferencesView.toggle()}) {Text (psalmVersions[chosenVersion])}
.sheet(isPresented: $showPreferencesView) {PreferencesView(showPreferencesView: self.$showPreferencesView, chosenVersion: self.$chosenVersion, isPsalmsExpanded: self.$isPsalmsExpanded, showLXX: self.$showLXX)})
}
}
NavigationLink
没有出现的原因可能是您在 ScrollView
中包含了 List
。因为 List
也是一个滚动组件,大小调整变得混乱并且 List
最终高度为 0
。删除 List {
和相应的 }
,您的链接应该会出现。
您的代码中还有许多其他潜在问题(正如我在评论中提到的),包括 ScrollView
中间的 NavigationView
。我也会删除它,因为您 可能 在您的视图层次结构中已经 NavigationView
更高了。
抱歉新手问题,但我一直在想为什么 Navigationlink 根本不产生 link。 Xcode 编译,但新视图的 link 所在的位置为空白。这个特定的视图是来自 ContentView 的视图 3,因此结构是 ContentView -> 视图 2 -> 视图 3(试图 link 到视图 4)。
struct MidnightView: View {
var hourItem: HoursItems
@State var showPreferencesView = false
@State var chosenVersion: Int = 0
@State var isPsalmsExpanded: Bool = false
@State var showLXX: Bool = false
var body: some View {
ScrollView (.vertical) {
VStack (alignment: .center) {
Group {
Text (hourItem.hourDescription)
.font(.headline)
Text ("Introduction to the \(hourItem.hourName)")
.font(.headline)
.bold()
.frame(maxWidth: .infinity, alignment: .center)
ForEach (tenthenou, id: \.self) {
Text ("\([=11=])")
Text ("\(doxasi)")
.italic()
}
}
.padding()
NavigationView {
List {
ForEach (midnightHours, id:\.id) {watch in
NavigationLink ("The \(watch.watchName)", destination: MidnightWatchView (midnightItem: watch, chosenVersion: self.chosenVersion, isPsalmsExpanded: self.isPsalmsExpanded, showLXX: self.showLXX))
}
}
}
Group {
Text ("Absolution of the \(hourItem.hourName)")
.font(.headline)
Text (absolutionTexts[(hourItem.hourName)] ?? " ")
Divider()
Text ("Conclusion of Every Hour")
.font(.headline)
Text (hourConclusion)
Divider()
Text (ourFather)
}
.padding()
}
}
.navigationBarTitle ("The Midnight Hour", displayMode: .automatic)
.navigationBarItems (trailing: Button (action: {self.showPreferencesView.toggle()}) {Text (psalmVersions[chosenVersion])}
.sheet(isPresented: $showPreferencesView) {PreferencesView(showPreferencesView: self.$showPreferencesView, chosenVersion: self.$chosenVersion, isPsalmsExpanded: self.$isPsalmsExpanded, showLXX: self.$showLXX)})
}
}
NavigationLink
没有出现的原因可能是您在 ScrollView
中包含了 List
。因为 List
也是一个滚动组件,大小调整变得混乱并且 List
最终高度为 0
。删除 List {
和相应的 }
,您的链接应该会出现。
您的代码中还有许多其他潜在问题(正如我在评论中提到的),包括 ScrollView
中间的 NavigationView
。我也会删除它,因为您 可能 在您的视图层次结构中已经 NavigationView
更高了。