首页 > 解决方案 > 从带有 NavigationItem 的目的地返回时,滚动列表的性能缓慢 - SwiftUI

问题描述

我找了很久,直到我发现问题所在。当我的一个目标视图有一个 NavigationItem 时,当我返回到初始列表时,我注意到一个奇怪的行为和 CPU 使用率的增加,只需滚动列表即可。

我的第一个视图是一个内部有一个 foreach 的列表(list - foreach),其中包含一些数组元素。我为每个项目使用 NavigationLink 到我的详细视图

最初,滚动列表可以看到 CPU 使用率最小

当您选择一行时,导航到将包含 NavigationItem 的详细信息视图。到目前为止,我认为一切都很正常。当您返回初始视图并滚动列表时,CPU 使用率的百分比非常高。您开始注意到列表动画的延迟。在此示例中,您可以看到较少,因为列表仅包含字符串,但是当行更复杂时,您会看到更多奇怪的行为。

解决方案不是在我的详细视图中停止使用 NavigationItem。

我不知道是否缺少某些东西,但是在这样一个基本示例中,我找不到问题的解决方案,或者这种奇怪行为的原因。

此代码使用 Xcode 11.5 和 iOS 13.4.1,测试是在设备上执行的

完整的代码在GitHub中,我做了一个小例子来说明这个问题。我以为我只会显示结果并避免发布非常大的帖子。

标签: iosswiftuiperformance-testingswiftui-list

解决方案


推荐阅读