问题标签 [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.
swiftui - SwiftUI 2.0 中的 navigationBarTitle 和 navigationTitle 修饰符有什么区别?
学习所有新的 SwiftUI 2.0 变化,但遇到的变化.navigationTitle
似乎几乎与.navigationBarTitle
. 我查看了 WWDC 2020 视频,发现一个视频被提及用于区分 MacOS 中的标签标题?但不确定我是否应该现在使用它而不是.navigationBarTitle
在 iOS 中使用它?Apple文档也不清楚两者之间的区别..
所以我的问题是,确切的区别是什么?你将如何在 iOS/MacOS 中使用它们?
ios - 在 SwiftUI 中使用视图模型而无需分配开销
在SwiftUI中使用视图模型
为了清晰地分离关注点,我想将我的SwiftUI视图与视图模型一起使用。
我有两个视图,一个ListView
是DetailView
当点击任何列表项时第一个会推动后者的视图——一个经典的导航视图。
我viewModel
在 my 上定义DetailView
如下属性并将其标记为观察对象,以便在其任何已发布属性发生更改时更新视图:
这种方法要求我在内部创建视图时将 a 传递viewModel
给's 初始化程序:DetailView
ListView
这里DetailViewModel
简单定义如下:
(这里的视图模型肯定是过度设计的,但这只是为了解释问题。)
⚡️ 问题
由于每次body
更新列表视图时都会创建所有导航链接的目标视图,因此相应的视图模型也是如此。对于如上所示的简单视图模型,这不是什么大问题,但对于更复杂的现实世界视图模型,它肯定会成为问题。例如,视图模型可能会实例化其他初始化起来相当昂贵的类。这将在显示ListView
每个DetailView
(模型)时完成——无论它是否会被显示(需要)。
因此,在我看来,在其他视图的主体内创建视图模型是一种反模式。尽管如此,这是我在 Internet 上的代码示例和文章中看到的最常见的做法。
❓ 我的问题
有没有办法让SwiftUI视图NavigationLink
立即实例化 s 的目标视图?或者有没有办法为视图创建视图模型以用作视图之外的导航链接目标body
?
swift - 使用 NavigationView 从 SwiftUI 中您离开的地方开始
我正在尝试在 SwiftUI 中创建一个多视图工作流程,您可以在其中从上次中断的地方重新开始,但仍然有很好的 NavigationView 过渡。
作为一个基本示例,我希望它具有SignupView
(您输入用户凭据的位置)> PersonalInfoView
(您输入其他个人信息的位置)>etc.
我最初使用一个简单的 NavigationLink 从一步到下一步。但我也想要它,如果你完成SignupView
然后退出应用程序,如果你再次打开它,用户可以PersonalInfoView
直接被带到。例如,您可以从上次中断的地方重新开始。
所以我想到了使用条件渲染:
但是现在,每当我从SignupView
到时,PersonalInfoView
我都不会像使用 NavigationLink 那样获得漂亮的滑动过渡。如果我添加 NavigationLink 到 go to PersonalInfoView
,它会滑入其中(就像典型的导航一样),然后滑出到另一个版本的视图(条件渲染)。
所以我想我的问题是,在整个 NavigationView 范式中始终处理条件视图的最佳方式是什么。谢谢
编辑:我可能没有很好地解释我的问题:我仍然想对所有内容使用 NavigationView(以便获得转换、后退按钮等)。我只是希望能够从流程中的不同点开始,但之后的每个视图都将成为导航堆栈的一部分。
swiftui - SwiftUI - NavigationLink 无法使用按钮
我正在制作一个应用程序,我在其中输入两个数字,并希望在单击按钮时在第二个屏幕中显示数字的加法结果。我可以在控制台中打印结果,但不幸的是,按钮周围的导航链接似乎不起作用。如果我将 NavigationLink 放在按钮标签周围而不是整个按钮周围,那么它会转到第二个屏幕,但按钮操作停止工作。这是我的代码:
有什么线索吗?谢谢你的好奇心。
swiftui - 跟随 NavigationLink 并返回后,SwiftUI .toolbar 消失
我在 NavigationView 的顶层添加了一个 .toolbar,它最终将用于在不使用滑动手势(向上按钮、向下按钮等)的情况下选择列表中的项目。我还有一个 .navigationBar 正在进行,以访问帐户和设置的其他视图。
在大多数情况下,它看起来非常好,但是当我在 NavigationView 中遵循 NavigationLink(在 .navigationBarItems 中),然后使用内置的后退导航时,我的 .toolbar 从顶层消失了。
我是否将 .toolbar 放在错误的位置?感觉像是 .navigationViewStyle(StackNavigationViewStyle()) 的问题,因为当我将其注释掉时,工具栏不会在导航时消失......但我不喜欢默认行为在横向中的工作方式,所以我依赖它.
swift - SwiftUI - 每个列表视图的内容取决于前一个列表视图中的选择时的最佳方法?
我有 3 个简单的数组:
每个数组填充一个列表视图,并带有指向下一个列表视图的导航链接
但是,我在如何使这个依赖方面遇到了麻烦
例如,
如果在 Listview1 上选择了“欧洲”,则 Listview2 应该只包含英国和法国(不是塞内加尔,因为塞内加尔不在欧洲)
如果在 Listview 2 上选择了“France”,则 Listview 3 应该只包含 Paris
任何有关如何处理此问题的推荐建议都将受到欢迎
谢谢
swiftui - SwiftUI NavigationView 在尝试孙子上一个下一个导航时出现父-子-孙场景问题
我在一个需要具有“一对多”实体结构的模型的项目中使用 SwiftUI。我在父级使用导航视图,在父级和子级使用导航链接。
这很好用,因为我可以:
- 在父级选择一个子级以导航到该子级
- 在子级选择孙子以导航到孙子
我有一个额外的要求 - 在孙子级别提供下一个和上一个按钮。我使用为导航链接提供的标签/选择功能来做到这一点。我给每个孙子一个数字索引标签,然后在子级别调用传入的函数,以通过从索引中添加或减去一个来更改选定的子视图。
问题是当我导航到下一个或上一个孙子时,“后退”链接会更改为最后一次访问的孙子,或者是“返回”而不是子视图。如果然后我在该视图上选择“返回”链接,则会立即转换到以前访问过的孙子视图,然后立即转换到子视图。
包含的代码是一个工作项目,它使用具有相同问题的“一对一”场景显示了一个更简单的示例。
如果我将代码更改为更简单的父子模型,在子级别具有下一个和上一个,这一切都按预期工作,所以问题是由于三个级别造成的。非常欢迎任何有关解决方案的帮助。