问题标签 [swiftui-foreach]
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.
ios - Swift UI - LazyVGrid 和 ForEach - 不能使用重复项
SwiftUI 的新手,并尝试在 LazyVGrid 内的单独 CardViews 上显示这些表情符号。当我使用 ForEach 循环为每个 CardView 设置一个表情符号时,我不能使用重复的表情符号 - 即使我使用过id: \.self
(实际上,并不完全确定这对我想要实现的目标很重要,但认为值得一提)。
基本上,我可以显示 5 张卡片,但是当我尝试显示 6 张(即重复项目开始时)时,预览会崩溃。我可以用 HStack 做到这一点,但由于某种原因,不能用 LazyVStack。我查看了 LazyVStack 文档,但找不到答案。
此外,尝试在 ForEach 中使用 .indicies 但似乎也没有修复它。
swift - SwiftUI:SIGABRT 涉及不相关的组件(WatchConnectivity、AppStorage、Foreach 等)
由于我添加了 WatchConnectivity,我的应用程序在启动时崩溃。我已经简化了应用程序,直到我删除的任何内容也删除了错误。
现在这个最小的应用程序处于一种奇怪的状态,每当我删除完全不相关的东西时,错误就会消失。@AppStorage
例如,如果我用 替换属性@State
,或者如果我选择修饰符的不同变体.fullScreenCover()
,或者如果我删除视图.frame(maxWidth: .infinity, alignment: .leading)
中行上的修饰符,或者如果我用视图的内容ForEach
替换视图,则错误会消失。ForEach
ForEach
我想这个问题是某种竞争条件。如果我发现为什么会发生这种情况,我可以确保错误不会再次随机出现。
要重现,只需在 XCode 中创建一个新的 iOS 应用程序并将其中的所有代码替换为ContentView
:
swiftui - 如何使用 foreach 在 SwiftUI 中基于测试数据创建多个单元格预览
我正在尝试显示卡片视图的多个预览(Apple 的 SwiftUI 教程)。我设法使用Group
结构手动完成。
我想使用 ForEach 根据测试数据自动显示四个单元格,但是以下内容无法构建,并且编译器无法为表达式生成诊断。
有没有办法在不显式创建每个预览的情况下构建预览?
swiftui - 如何从嵌套的 ForEach 循环中获取连续的索引号?
我正在为我的小部件扩展使用 4 块网格。
我想用一组元素填充这些网格。
当我使用两个嵌套的 ForEach 循环时,我无法获取第 4 个索引中的元素。
有什么办法可以解决这个问题吗?因为它在 中View
,所以我不能使用任何操作。
视图的完整代码:
解决方案 请检查接受的答案。
swift - 在 SwiftUI ForEach 中从父级绑定到子级
我有一个Subtask
这样的定义:
我以这样的方式填充它们的数组ObservableObject
:
然后我从我的父视图开始渲染它们,如下所示:
为了能够修改Subtask
子视图中的每个人:
我ParentView
在这一行遇到错误:
...说的是:
在范围内找不到“$subtask”
所以似乎没有为我的视图模型返回的ForEach
每个返回绑定。subtasks
我尝试了其他变体,ForEach
但仍然出现错误:
如何将Subtask
子视图从父视图绑定到子视图?
swift - Swift UI IOS 15 ScrollView 调整
我不了解你们,但是当我今天打开我的项目时(自 Swift 切换到默认运行 iOS 15 以来的第一次),我的 UI 看起来完全不同。最重要的是,之前在 ForEach 中相邻的视图之间现在有一些填充。
我们怎样才能消除这种情况?我已经包含了一些示例代码,但我希望我们能找到一个可以概括的解决方案。我的 UI 中的实际问题有太多移动部分,无法在此处包含。
variables - 如何使用 ForEach SwiftUi 向 HStack 添加元素
我对 Swift 相当陌生,我正在尝试生成元素的 HStack(将在进度条中使用)并能够使用按钮添加元素。我不确定是否应该在 ForEach(1..<Variable) 部分中使用变量或使用其他方法。这是我到目前为止的代码,但它不起作用。
@State var NumberOfCircles : Int = 0 var body: some View {
}
swift - ForEach 没有正确更新动态内容 SwiftUI
很抱歉让这篇文章这么长,但事后看来,我应该向您展示该问题的更简单实例,以便您更好地了解问题所在。我假设 ForEach 的相同问题是这两个错误的根本原因,但我可能是错的。仍然包含第二个实例以提供上下文,但第一个实例应该是您完全理解问题所需的全部内容。
第一个例子:
这是该问题的视频:https ://imgur.com/a/EIg9TSm 。如您所见,有 4 个时间码,其中 2 个是收藏夹,2 个不是收藏夹(由黄色星标显示)。此外,顶部的文本表示时间码数组,显示为收藏 (F) 或不收藏 (N) 列表。我单击最后一个时间码(更改为收藏)并按下切换按钮以取消收藏。当我点击保存时,时间码数组会更新,但如您所见,这并没有在列表中表示。但是,您会看到缩减数组的 Text 立即更新为 FNFF,表明它已正确更新为 ObservedObject 的收藏夹。
当我点击导航返回页面时,UI 已正确更新,并且有 3 个黄色星。这让我假设问题出在 ForEach 上,因为 Text() 显示数组已更新,但 ForEach 没有。据推测,点击离开页面会重新加载 ForEach,这就是它在退出页面后更新的原因。EditCodeView() 处理 CoreData 中 TimeCodeVieModel 的保存,我 99% 确定它通过我自己的测试以及 ObservedObject 按预期更新的事实正常工作。我很确定我使用的是 ForEach 的动态版本(因为 TimeCodeViewModel 是可识别的),所以我不知道如何在保存后立即更新行为。任何帮助,将不胜感激。
这是视图的代码:
这是视图模型的代码(不应该与问题相关,但为了理解而包含在内):
第二审:
编辑:我意识到可能很难理解代码在做什么,所以我包含了一个演示问题的 gif(不幸的是,我的声誉不够高,无法自动显示)。如您所见,我选择了要更改的单元格,然后按下按钮将 TimeCode 分配给它。TimeCodeCellViewModels 数组在后台发生变化,但在我按下主页按钮然后重新打开应用程序之前,您实际上看不到这种变化,这会触发 ForEach 的刷新。问题的 GIF。如果GIF太快还有这个视频:https ://imgur.com/a/Y5xtLJ3
我正在尝试使用 HStacks 的 VStack 显示网格视图,并且遇到了一个问题,即当传入的数组发生更改时,我用来显示内容的 ForEach 不刷新。我知道数组本身正在发生变化,因为如果我将其缩减为字符串并使用 Text() 显示内容,它会在发生更改后立即正确更新。但是,只有当我关闭并重新打开应用程序时,ForEach 循环才会更新,从而强制 ForEach 重新加载。我知道有一个专门为动态内容设计的特殊版本的 ForEach,但我很确定我正在使用这个版本,因为我传入了 '''id: .self'''。这是主要的代码片段:
我很确定它不会改变任何东西,但我确实必须为 TimeCodeCellViewModel 定义一个自定义散列函数,这可能会改变 ForEach 的行为(被更改的属性包含在散列函数中)。但是,我注意到在我的项目的另一部分使用不同的视图模型的相同 ForEach 行为,所以我非常怀疑这是问题所在。
ios - ForEach 完成时执行代码 - swiftUI
我想知道是否有一种方法可以在事件 forEach 函数完成时执行给定代码(如 OnAppear 或苹果提供的类似方法),如果没有方法可用,我如何在 ForEach 完成时执行代码。
我有以下代码:
我想在 ForEach 完成事件中执行的代码: