Xcode 13.1 中的 Navigationlink 问题——空白而不是链接?

Posted

技术标签:

【中文标题】Xcode 13.1 中的 Navigationlink 问题——空白而不是链接?【英文标题】:Navigationlink question in Xcode 13.1 -- Blanks instead of links? 【发布时间】:2021-12-16 08:47:49 【问题描述】:

对于新手的问题,我很抱歉,但我不知道为什么 Navigationlink 根本不生成任何链接。 Xcode 可以编译,但是新视图的链接在哪里是空白的。这个特定的视图是来自 ContentView 的 View 3,因此结构是 ContentView -> View 2 -> View 3(试图链接到 View 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 ("\($0)")
                    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))

【问题讨论】:

如果没有minimal reproducible example(你的有很多缺失的类型,无法编译),调试起来会很困难。我马上说,在ScrollView 中间有一个NavigationView 看起来很奇怪。通常,您应该只在视图层次结构的顶部有 一个 NavigationView 【参考方案1】:

NavigationLink 未出现的原因可能是因为您在ScrollView 中包含了List。因为List 也是一个滚动组件,所以大小会被弄乱,List 最终的高度为0。删除List 和对应的,您的链接应该会出现。

您的代码中还有许多其他潜在问题(正如我在评论中提到的那样),包括ScrollView 中间的NavigationView。我也会删除它,因为您可能在您的视图层次结构中已经有一个更高的NavigationView

【讨论】:

完全成功了。谢谢!

以上是关于Xcode 13.1 中的 Navigationlink 问题——空白而不是链接?的主要内容,如果未能解决你的问题,请参考以下文章

2021-11-17 xcode12.3 &xcode13.1 下lipo合并framework问题

Xcode 13.1 卡在 Apple M1 Pro 上安装模拟器

在 Xcode 13.1 和 iOS 15 上测试 Unity 游戏时的奇怪行为

命令 CodeSign 在 Xcode 版本 13.1 中因非零退出代码而失败

带有 MacOS 12.0.1 的 Xcode 13.1 无法创建 iPhone 5s 模拟器

macOS Simulator 部署目标设置为 13.5,但此平台支持的部署目标版本范围为 13.1 到 13.4.999