问题标签 [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.
swift - 在 SwiftUI 中“快速”导航会破坏绑定变量并阻止进一步导航
下面的工作等待时间为 2 秒,但将其设置为 0.5 并且您无法通过第二个屏幕。
当我订阅shouldNavigate
并打印传入的值时,我可以看到较短的等待时间会导致它nil
在导航后快速进入,而较长的等待时间不会产生这种效果。
是否发生了一些我不知道的生命周期事件?
IRL,我在视图模型搜索广告 BLE 外围设备时显示一个屏幕,并在发现它时进行导航。这种搜索可能非常快。我宁愿不实施一些临时延迟,因为它很臭(感觉就像我在对用户撒谎)。
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 )。
任何帮助表示赞赏!
swiftui - 在 SwiftUI 中创建 NavigationView 堆栈并从第一个视图移动到最后一个视图
我在 SwiftUI 中有一个 NavigationView 和几个视图,假设我们有 [View a, View b, View c, View d]。
我想要的是从“视图 a”移动到“视图 d”而不显示“视图 b”、“视图 c”并且能够从“视图 d”导航回“c、b”并返回到“a ”。
ios - 如何在 SwiftUI 中调整 navigationBarTitle 和 Label Text 对齐方式
我刚刚学习了 swiftUI,我没有遇到什么麻烦。我想像这样使 navigationBarTitle 和标题标题对齐:
我试图像下面那样做,但它不起作用:
从上面的代码中,我得到了这样的视图:
有人可以帮助我如何获得我想要的视图
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:
swiftui - 有条件地显示导航视图
由于在视图层次结构中应该只使用一个 NavigationView,您如何处理要呈现的初始视图在应用程序启动时确定的情况?
因此,如果令牌为 nil,我们将转到声明 NavigationView 的登录,当我们登录时,NavigationLink 会将我们带到 Campaigns 视图。但是,如果令牌不是 nil,我们会直接进入没有 Navigation View 的 Campaigns 视图,因此无法从那里导航到其他视图。如果我在 Campaigns 中也声明了一个 Navigation View,我最终会得到两个导致各种破坏的,例如 2 个后退按钮,一个指向 Login,一个指向 Campaigns。我显然做错了......请看图片
ios - 我构建 SwiftUI 项目的方式是否存在导致 .navigationTitle 不出现的问题?
我的 SwiftUI 项目在某个点后拒绝显示导航标题。我使用的导航结构在我见过的任何示例项目中都没有实现,但它对我来说很有意义,并且到目前为止似乎一直有效。我的怀疑是,因为我使用的是不同的导航结构,所以它是问题的一部分。每一页都有,但标题.navigationBar
不显示。
我在 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 按预期工作。
ios - NavigationTitle 视觉故障 - 滚动时透明且不将状态从 .large 更改为 .inline
.navigationTitle
一些观点似乎有一些问题。在某些观点上(并且仅在某些时候),不会像预期的那样.navigationTitle
从.large
变为。.inline
相反,标题在向上滚动时保持原位,并且导航栏完全不可见(如下面的视频中所述)。这一切都是每次都可以重现的。
我没有在堆栈溢出或 Apple 开发者论坛上找到任何遇到此问题的人。有些人产生了与此类似的结果,但这些都是通过删除一些样式化代码来修复的.navigationbar
,我没有在我的代码中的任何地方对其进行任何修改。
以下是我的一些代码片段:
它几乎看起来像是 SwiftUI 本身的一个错误,因为关闭控制中心的事实使它可以工作,但没有动画(如视频中所示)。此外,更改首先选择哪个视图@State var selectedTab: Views
似乎让所选视图按预期工作,但让其余选项卡混乱。
当我在我的 iPad 上构建和运行该应用程序时,它的行为符合预期,没有错误,只有在我的 iPhone 和 Mac 上的 iOS 模拟器上运行时,它才会这样做,有什么办法可以解决这个问题?