问题标签 [onappear]

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 投票
1 回答
738 浏览

swiftui - 当 TabView 内的 NavigationView 时,SwiftUI onAppear 调用了两次

所以我有一个 TabView,其中每个选项卡都嵌入在 NavigationView 中。在每个选项卡第一次出现时,我得到以下生命周期调用 onAppear()、onDisappear()、onAppear()。所以看起来 onAppear 被调用了两次。这只是第一次发生。如果我导航回同一个选项卡,只有 onAppear() 被调用,而且只有一次。

这是一个最小的例子:

这是打印出来的结果:

如果我单击第二个选项卡,会发生以下情况

0 投票
0 回答
82 浏览

swift - 加载视图和 onAppear

我有一个应用程序,它最终会显示一长串数据。除了测试 Lazy Stacks、加载异步和其他技术之外,我还想提供一条加载消息。有趣的是,似乎只有最原子的视图(在这种情况下是 a Scrollview,而不是 a List)被重新计算。代码如下:

三行中的print所有 3 行都在视图的初始加载时打印,但是当更改列表时(这就是 SectionBar 所做的,我已经删除了过滤代码),只有 #3 会在重新计算数据时打印。很明显,ForEach 和 ZStack 没有被重绘,只有 ForEach 中的单个元素。添加indexed()感觉有点复杂,在// 1打印之后和数据出现之前仍然有大约 1/4 秒的延迟,这让我相信那里有一个隐藏的步骤。

测试视图数据是否已加载的最可靠方法是什么,以及在行//1和出现的视图之间发生了什么?或者,创建加载消息的更好方法是什么?

提前致谢。

0 投票
2 回答
152 浏览

swift - SwiftUI 上出现 AVAudioPlayer 播放多次

我试图在我的应用程序上添加背景音乐的 AVAudioPlayer,我在主屏幕上启动播放器,尝试在应用程序打开时开始播放,但出现意外行为......
它会播放并立即继续创建新的播放器和播放那些播放器,所以有几十个相同的声音同时

播放音乐的启动和播放功能


出现调用函数

编辑:示例代码...

0 投票
0 回答
45 浏览

swiftui - SwiftUI - .onAppear 未触发

我有这个问题,我在循环一些数据,然后在子视图中我从 API 加载一些额外的数据。根据从该 API 返回的数据,我希望逻辑检查是否显示它。

我尝试了不同的解决方案,但似乎无法解决问题。

任何帮助都会很棒。

0 投票
0 回答
59 浏览

ios - SwiftUI 在第一个选项卡出现时加载 TabView 中的所有视图

我的 TabView 看起来像这样:

当我进入 TabView 时,我将在 TabView1 上。我想要做的是当我在 TabView1 上时加载 TabView2 中的内容,以便在我单击并切换到 TabView2 时准备好 TabView2 中的内容。

我猜我需要在任何 .onAppear 方法中做一些事情,但我到底应该怎么做?非常感谢!

0 投票
1 回答
171 浏览

swiftui - 如何检测 LazyVGrid 的项目是否被重新构建?

在我的应用程序中,LazyVGrid多次重新构建其内容。网格中的项目数可能不同或保持不变。每次必须以编程方式将特定项目滚动到视图中。
当第LazyVGrid一个出现时,可以使用onAppear()修饰符将项目滚动到视图中。
有什么方法可以检测LazyVGrid下一次完成重新构建其项目的时刻,以便可以安全地滚动网格?

这是我的代码:

网格

帮助枚举确定要在网格中显示的列数

简化的视图模型

0 投票
0 回答
72 浏览

swiftui - 在 NavigationView 上应用 .navigationViewStyle(.stack) 时调用了两次 onAppear 修饰符

【总结问题】

.onAppear.navigationViewStyle(.stack)在 NavigationView 上使用时调用了两次修饰符。

[描述预期和实际结果]

我期望.onAppear被调用一次,但.onAppear被调用两次。

编辑:我删除了项目的链接并添加了一个更简单的模板代码来显示问题。

这是日志:

0 投票
2 回答
29 浏览

json - SwiftUI - 获取远程 JSON 数据中的数据以在应用启动时刷新

我是一个菜鸟(我的代码/模型目前会显示它,所以请放轻松!)。

我正在尝试创建一个食谱风格(cenotes)应用程序。

这样我就可以更新数据,我有一个远程 json 文件,因此用户无需重新安装即可获取更新的数据。

该应用程序成功检索和解析数据(这是一个胜利!),但仅在首次安装时

当它在线更改时,它不会随后刷新数据。我尝试使用 .onAppear 和 .refreshable 均未成功。我需要删除应用程序并重新安装它才能获取更新的数据。

以下是我文件的一些编辑版本:有人可以帮忙吗?我认为我只有一个 @StateObject/@EnvironmentObject 或类似的不正确的东西,但无法发现错误。

Locations.swift

Location.swift - 虚拟机

App.swift - 应用程序打开此选项卡视图

ListView.swift - 第一个选择的选项卡是这个视图 - 这些位置在初始安装后不会更新:

0 投票
0 回答
24 浏览

swift - SwiftUI:为什么 onAppear 会执行两次?

StepPreview 打印两次。当视图加载时(选择选项卡时)一次,当用户返回选项卡时再次。在 NavigationView 上使用 onAppear 时这是预期的吗?

0 投票
0 回答
72 浏览

swift - SwiftUI:使用 onAppear 的替代方法是什么?

我想加载健康数据,以便在点击选项卡时显示一次用户步骤。但是通过使用 onAppear,每次点击选项卡时,它都会再次加载步骤并显示两次。我相信这是由于onAppear。这里应该使用什么替代方案?