问题标签 [swiftui-navigationview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
55 浏览

swift - 在 SwiftUI 中“快速”导航会破坏绑定变量并阻止进一步导航

下面的工作等待时间为 2 秒,但将其设置为 0.5 并且您无法通过第二个屏幕。

当我订阅shouldNavigate并打印传入的值时,我可以看到较短的等待时间会导致它nil在导航后快速进入,而较长的等待时间不会产生这种效果。

是否发生了一些我不知道的生命周期事件?

IRL,我在视图模型搜索广告 BLE 外围设备时显示一个屏幕,并在发现它时进行导航。这种搜索可能非常快。我宁愿不实施一些临时延迟,因为它很臭(感觉就像我在对用户撒谎)。

0 投票
1 回答
11 浏览

swiftui-list - NavigationLink:显示带有调查的中间视图,并在关闭后 - 继续“目标”视图

在我的健身应用程序中,用户会看到可用训练的列表,该列表由以下结构实现

(见下面的完整代码)

[数据]包含一个长if { } else { } if { } else { }块,包括多个场景 - SetView/WeekView/BuildWeekView/GenerateJourney(我们将它们都称为 GoToView),具体取决于训练设置和状态(新训练或已经开始一)。

问题来了。用户点击列表中的一些训练,然后在从 NavigationLink 将用户发送到适当的视图 ( GoToView ) 之前,我检查他是否完成了他的健康水平调查:

如果他还没有,我需要先给他看一个调查视图。只有在他完成调查之后 - 他才会被进一步发送到GoToView ..(如果他已经填写了调查,他会被直接发送到GoToView,而不是显示调查视图)

你会如何推荐实现这个中间视图,以便当他回答我的问题时,他会继续 GoToView ?

我在 if/else 块中有 4 个不同的场景(SetView、WeekView、BuildWeekView、GenerateJourney),我不想在每个场景中包含调查视图。我想在发送用户之前找到一些方法来显示视图到 NavigationLink 的目的地 ( GoToView )。

任何帮助表示赞赏!

0 投票
0 回答
37 浏览

swiftui - 在 SwiftUI 中创建 NavigationView 堆栈并从第一个视图移动到最后一个视图

我在 SwiftUI 中有一个 NavigationView 和几个视图,假设我们有 [View a, View b, View c, View d]。

我想要的是从“视图 a”移动到“视图 d”而不显示“视图 b”、“视图 c”并且能够从“视图 d”导航回“c、b”并返回到“a ”。

0 投票
0 回答
84 浏览

swiftui - 使用“导航链接”在“导航视图”之间导航

在此处输入图像描述

我有很多视图,每个视图都有“NavigationView”,我用它来添加不同的按钮,当它尝试在它们之间导航时,“NavigationLink”将目标导航视图向下推,如图所示,所以有没有办法在没有“NavigationLink”的视图之间导航,或者使用“NavigationLink”而不影响目标“NavigationView”的外观。

0 投票
3 回答
105 浏览

ios - 如何在 SwiftUI 中调整 navigationBarTitle 和 Label Text 对齐方式

我刚刚学习了 swiftUI,我没有遇到什么麻烦。我想像这样使 navigationBarTitle 和标题标题对齐:

图1:我想让我的观点像这样

我试图像下面那样做,但它不起作用:

从上面的代码中,我得到了这样的视图:

图 2:我从上面的代码中得到了这样的视图

有人可以帮助我如何获得我想要的视图

0 投票
2 回答
1439 浏览

swiftui - SwiftUI 导航栏项目在 iOS 14 上消失

在我的应用程序中发现,当设备方向改变时,某些视图中的导航栏项目会消失。这似乎只发生在使用 NavigationLink 打开的视图中,主视图导航栏项目按预期工作。与此相关的 iOS 13.7 和 iOS 14.2 之间似乎发生了一些变化。此外,使用前导项还是尾随项似乎并不重要,两者都会消失。

发生这种情况的示例片段:

这是发生的事情

只有在真实设备上运行时才会出现此问题。(在我的情况下是 iPhone 11)在模拟器上一切都按预期工作。

其他人看到过类似的问题吗?解决方法/修复?

0 投票
1 回答
23 浏览

swiftui - 使用 SceneDelegate.toView() 弹出视图

我有一个用户界面,您可以在其中导航/推送这样的视图:AView -> BView -> CView -> DView

我想弹出几个视图(从 DView 到 BView),而不是在现有堆栈的顶部放置一个新视图(BView),我找到了这样做的方法:

(UIApplication.shared.connectedScenes.first?.delegate as?SceneDelegate)?.toBView()

我不明白的是,当我尝试从 DView 返回到 BView 时,为什么它会调用 CView 的 init()?

这是我在调试控制台中得到的输出:

为什么它调用CView 的 init()以及如何避免这种行为?

AView.swift:

SceneDelegate.swift:

0 投票
1 回答
98 浏览

swiftui - 有条件地显示导航视图

由于在视图层次结构中应该只使用一个 NavigationView,您如何处理要呈现的初始视图在应用程序启动时确定的情况?

因此,如果令牌为 nil,我们将转到声明 NavigationView 的登录,当我们登录时,NavigationLink 会将我们带到 Campaigns 视图。但是,如果令牌不是 nil,我们会直接进入没有 Navigation View 的 Campaigns 视图,因此无法从那里导航到其他视图。如果我在 Campaigns 中也声明了一个 Navigation View,我最终会得到两个导致各种破坏的,例如 2 个后退按钮,一个指向 Login,一个指向 Campaigns。我显然做错了......请看图片

0 投票
1 回答
94 浏览

ios - 我构建 SwiftUI 项目的方式是否存在导致 .navigationTitle 不出现的问题?

我的 SwiftUI 项目在某个点后拒绝显示导航标题。我使用的导航结构在我见过的任何示例项目中都没有实现,但它对我来说很有意义,并且到目前为止似乎一直有效。我的怀疑是,因为我使用的是不同的导航结构,所以它是问题的一部分。每一页都有,但标题.navigationBar不显示。

SettingsView.swift 屏幕

我在 Stack Overflow 和其他方面尝试了许多解决方案。我在下面列出的每一页上都尝试了.navigationBarHidden(false),.navigationBarTitle()和 的所有组合,没有任何变化。.navigationBarBackButtonHidden(true)我还尝试了我能想到的每个位置来放置这些.navigationBar修饰符组合。

最近,我发现.toolbar,这也没有任何改变。我的怀疑是(如下面的代码片段所示),因为NavigationView它在第一个视图(WelcomeUI.swift)中,我无法.navigationBarTitle在代码中放置更深的内容。

以下是我当前的导航结构,以及每个文件中的一些代码:

WelcomeUI.swift

LoginUI.swift

注意:SignupUI.swift 本质上与 LoginUI.swift 相同

MainUI.swift

注意:MainUI.swift 中的所有视图的结构都相同。

SettingsView.swift

我还应该注意,只有 MainUI.swift 之后的页面受此影响。WelcomeUI.swift 和 LoginUI.swift 按预期工作。

0 投票
2 回答
174 浏览

ios - NavigationTitle 视觉故障 - 滚动时透明且不将状态从 .large 更改为 .inline

.navigationTitle一些观点似乎有一些问题。在某些观点上(并且仅在某些时候),不会像预期的那样.navigationTitle.large变为。.inline相反,标题在向上滚动时保持原位,并且导航栏完全不可见(如下面的视频中所述)。这一切都是每次都可以重现的。

可重现.navigationTitle错误的视频

我没有在堆栈溢出或 Apple 开发者论坛上找到任何遇到此问题的人。有些人产生了与此类似的结果,但这些都是通过删除一些样式化代码来修复的.navigationbar,我没有在我的代码中的任何地方对其进行任何修改。

以下是我的一些代码片段:

它几乎看起来像是 SwiftUI 本身的一个错误,因为关闭控制中心的事实使它可以工作,但没有动画(如视频中所示)。此外,更改首先选择哪个视图@State var selectedTab: Views似乎让所选视图按预期工作,但让其余选项卡混乱。

当我在我的 iPad 上构建和运行该应用程序时,它的行为符合预期,没有错误,只有在我的 iPhone 和 Mac 上的 iOS 模拟器上运行时,它才会这样做,有什么办法可以解决这个问题?