Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SwiftUI displayModeButtonItem是内部管理的

SwiftUI displayModeButtonItem是内部管理的
EN

Stack Overflow用户
提问于 2020-09-04 03:59:56
回答 5查看 8.6K关注 0票数 26

每当我导航到另一个屏幕时,我都会在控制台中得到这条消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Assert] displayModeButtonItem is internally managed and not exposed for DoubleColumn style. Returning an empty, disconnected UIBarButtonItem to fulfill the non-null contract.

目前,我在应用程序的入口点设置了导航视图,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NavigationView {
        KeyboardView(matrixVM: matrixVM, isNavigationBarHidden: $isNavigationBarHidden)
            .background(Color("background")
            .edgesIgnoringSafeArea(.all))
            .navigationBarTitle("Workspace")
            .navigationBarHidden(self.isNavigationBarHidden)
            .onAppear {
                self.isNavigationBarHidden = true
        }
    }

然后在KeyboardView中我有导航链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NavigationLink(destination: NotebookView(isNavigationBarHidden: $isNavigationBarHidden, saved: matrixVM), label: {
                            Text("Notebooks")
                                .font(.system(size: 14, design: .rounded))
                                .fontWeight(.medium)
                                .foregroundColor(Color("text"))
                                .padding(.trailing, 10)
                        })

在NotebookView内部,我有一个导航链接列表(每个笔记本都链接到它的详细页面)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ScrollView(showsIndicators: false) {
                        ForEach(notebooks, id: \.self) { notebook in
                            
                            NavigationLink(destination: ExpandedSnippet(matrixVM: saved ,notebook: notebook)
                                            .navigationBarTitle("Notebook", displayMode: .inline)) {
                                SnippetCard(notebook: notebook, matrixVM: saved)
                                    .frame(width: UIScreen.main.bounds.width)
                            }
                            .padding(.bottom, 30)
                        }
                    }

一切似乎都正常,但就在几个小时前就没有了(我用的是制表栏,它在工作了几周后突然开始崩溃)。我觉得有点乱,我做错了什么。知道为什么吗?谢谢你的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-11-09 05:16:13

在iPhone或iPhone模拟器上运行Xcode 12.1,而不是在iPad模拟器上运行时,我就得到了这一点。

把这个附加到NavigationView上,为我修复了它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.navigationViewStyle(StackNavigationViewStyle())
票数 26
EN

Stack Overflow用户

发布于 2020-09-05 15:50:20

使用Xcode 12.1 (12A7403),这似乎是固定的.

对于后人而言,先前的答案仍在下文。

我在前面也遇到过这种情况,使用了最新的Xcode 12 beta (12A8189)。

这提供了一个简单的MVP来演示这个问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: DetailView()) {
                    Text("First View")
                }
            }
            .navigationViewStyle(StackNavigationViewStyle())
        }
    }
}

struct DetailView: View {
    var body: some View {
        List {
            NavigationLink(destination: Text("Detail Title")) {
                Text("New View")
            }
        }
        .navigationBarItems(trailing:
                                Button(action: {
                                    print("Clicked")
                                }) {
                                    Image(systemName: "square.and.arrow.up")
                                })
    }
}

问题在于我使用的是什么设备。

在iPhone上运行它时,我将看到OP发布的消息。

在iPad上运行此程序时,我将不会看到任何消息。

现在,它为什么要这样做?

首先,您可以查看这个苹果参考,查看断言引用的displayModeButtonItem

或者,查看上面代码的屏幕截图。

iPhone:

iPad:

请注意iPad如何显示displayModeButtonItem的图标,而iPhone没有显示图标。

基于此,我认为苹果犯了一个错误。也许它会在下一个版本中被修复?

你能做的最好的事情就是将错误归档

FWIW,我确实看过发布说明,没有找到任何相关的参考。

票数 9
EN

Stack Overflow用户

发布于 2020-11-15 09:20:59

.navigationViewStyle(StackNavigationViewStyle())附加到NavigationView确实会使错误保持沉默。

不幸的是,这并不总是一个理想的解决方案,有时还会引入另一个特定于StackNavigationViewStyle()的现有bug:所选列表行的背景色在导航后保持灰色。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63740788

复制
相关文章

相似问题

displayModeButtonItem实际上是做什么的?

14

UISplitViewController displayModeButtonItem()

91

UISplitViewController displayModeButtonItem不显示

12

UISplitViewController displayModeButtonItem in iPAD

10

什么是WindowGroup - SwiftUI中的“SwiftUI”

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文