Picker View 数据消失太快

Posted

技术标签:

【中文标题】Picker View 数据消失太快【英文标题】:Picker View data disappears too quickly 【发布时间】:2020-11-03 00:23:56 【问题描述】:

场景:

    应用程序是基于选项卡的;一个选项卡是具有“选择器(数据)视图”的容器视图。 Picker 视图:Picker 最初通过@State -> @Binder 加载数据。 “首页”(Greetings)视图最初显示在 ZStack 内的 Picker 视图上方。 用户确认首页消失以显示选取器视图 (#2)。

注意:数据由 Picker 每次调试检查接收。 隐藏的 Picker View 显示了初始数据。

问题: 显示的 Picker View 变空关闭后首页/视图。

以下是通过数据断点的调试列表:

观察: 我想尽快访问数据源以填充 Picker 视图以避免用户等待数据。因此,数据最初是在显示 Picker 视图之前访问的。

然而, Picker View 显然在显示之前被重新渲染。

注意:如果我注释掉首页代码,我会看到 populated 选择器页面。

????我添加了一个布尔过滤器以避免使用空数据负载调用 Picker。

问题: 如何使数据更持久;也就是一直待到被解散?

我是否必须制作@Binding 变量的具体副本?

【问题讨论】:

你能提供可重现的例子吗? 应用很大;我会尝试用一个简单的版本重新创建。然后回来。 【参考方案1】:

非 SwiftUI 修复:

持久数据向量使用单例;因此不受控制视图生命周期的影响:

final class DataSource 
    static let shared = DataSource()
    var myVar:String = "Hello World"
    var countryNames: [String]?

这很简单,很优雅。 不过,我想在这里使用 combine,但是数据寿命太不稳定了。

随着我对 Combine 的精通,我计划在我的项目中进一步回顾这个范例。

如果有人有不需要 Singleton 对象的 SwiftUI/Combine 访问、保存/共享数据的方法,请发布。

【讨论】:

以上是关于Picker View 数据消失太快的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Picker 视图在 TabView 中消失

我的 UIActivityIndi​​catorView 消失得太快,使其无用,延迟是解决此问题的最佳方法吗?

解决uniapp无法显示uni-file-picker的问题 - 不显示图片选择框 - 图片上传按钮消失

Android View部分消失效果实现

Android View部分消失效果实现

UISplitViewController Detail View 旋转后消失