问题标签 [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 - SwiftUI 将几何阅读器与 ForEach 结合使用
我无法弄清楚为什么我的 ForEach 循环使我的视图无法在其父视图中正确缩放。如果我注释掉 ForEach 循环并取消注释//.frame(width: geometry.size.width, height: 10)
RoundedRectangle 在其父视图中正确缩放,但是当使用 ForEach 循环时,我的视图会流出屏幕。我已经仔细检查了CGFloat((sleepOrAwakeSpan.seconds / DataStore.sleepOrAwakeSpans.map { $0.endTime.timeIntervalSince($0.startTime) }.reduce(0, +)))
总数 = 100。所以我知道几何是正确的,并且我知道我预期的几何百分比是正确的,什么可能导致添加 ForEach 使其流出屏幕?
swiftui - 导航到详细视图时,SwiftUI NavigationLink 会清除父视图的数据
父视图包含SearchBar
and ForEach
List
,列表中的每个项目都包含在NavigationLink
项目内,问题是父列表。NavigationLink
点击inside后清除ForEach
,我也添加UUID()
了 for ForEach
,但同样的问题发生了。我正在使用 Xcode 12.4,同样的问题发生在 iOS 13 和 14 上。
搜索视图
简单搜索模型视图
gridview - SwiftUi Nested ForEach 导致同一视图的意外渲染
我正在尝试GridView
按照这个SwiftUi GridView iOS 13教程在 SwiftUi 中构建一个。
我ForEach()
以嵌套方式使用两个,一个用于显示行,另一个用于显示GridView
.
我的问题是嵌套ForEach()
的调用次数超出了预期。虽然这会创建一个准确GridView
但它需要很多时间(6-8 秒)。我也在GridView
里面使用它,TabView
所以当我在页面之间滑动时,页面之间TabView
有明显的可见延迟(每个页面都包含一个 GridView,并且网格中的元素数量有所不同)。
这是ForEach
用于创建GridView
.
对于具有 3 行和 3 列的 9 个元素的网格,第二个内部的语句ForEach
在每行中被调用 9 次,而每行只应该调用 3 次。
我在这里尝试了建议的答案Nested ForEach (and List) in Views 给出了意想不到的结果(用一个组将外部 ForEach 内的视图封闭),但是错误仍然存在。
根据 Nested ForEach 的建议,我还尝试id
为两者制作唯一的,导致意外订购,但我仍然无法解决它。ForEach
swiftui - LazyHStack 中嵌套的 ForEach 崩溃
我在 a 中有两个嵌套ForEach
的 sLazyHStack
此片段编译,但它立即崩溃并出现以下错误
致命错误:每个布局项只能出现一次:文件 SwiftUI,第 0 行
我在网上读到,这可能是由于ForEach
没有正确区分集合的元素,即使所有元素都是可识别的。在我的例子中,items
外部ForEach
的都是可识别的,而内部ForEach
的则循环遍历一组可选URL?
对象。我试图URL
使用它的绝对字符串(我认为应该是唯一的)来识别它,但它没有用。
我应该补充一点,相同的代码片段适用于标准的HStack
. 我怎么解决这个问题?
swiftui - swiftui navigationview 弹出到根目录并以编程方式加载新视图
在我的应用程序中,我想以编程方式从标签栏页面打开聊天页面。我正在尝试更改选择并安装它。如果聊天行出现在屏幕上,则它可以正常工作并加载。但是如果聊天行在较低的行(例如,如果它在第 100 行),则不会加载。它需要向下滚动并出现加载。我们该如何解决这个问题,如何加载聊天页面?
swiftui - 在 SwiftUI 中将 TextField 与 ForEach 一起使用
我正在尝试使用ForEach
. 以下代码按预期工作:我可以添加/删除文本字段,并且绑定是正确的。但是,当我items
在ObservableObject
视图模型中移动它时,它不再起作用并且会因index out of bounds
错误而崩溃。这是为什么?我怎样才能让它工作?
我尝试使用的视图模型:
我发现很多问题都在处理同一个问题,但我无法解决我的问题。其中一些没有提到TextField
,而另一些则不工作(不再?)。
非常感谢
swift - 筛选器值的筛选和选择 SwiftUI
我正在构建一个旅行计划应用程序,让用户从本地 json 文件中选择一个城市。
我可以显示和过滤列表(使用选择器),但我不知道如何读取和存储选择。
任何帮助将不胜感激。
模型
选择器视图
JSON 示例
swift - SwiftUI onDelete() 没有列表
是否可以让onDelete()
修饰符在ForEach
不位于 a 内的情况下工作List
?
例如在这个例子中,你怎么能得到默认的滑动来删除行为?
ios - SwiftUI 如何构建多个导航链接
我正在使用此答案NavigationButton
中的自定义,以便在从列表导航到新视图时能够加载特定视图的数据。它工作得很好,但问题是当我尝试在 ForEach 循环中使用它时,我最终会得到带有多个变量的多个导航链接,这些变量都被告知要推送一个新视图,这会导致 SwiftUI 然后导航到新视图自动返回父视图(错误)。如何在不触发错误的情况下保留在导航到新视图时能够触发代码运行的功能。isActive
@State
ios - SwiftUI 列表:NSInternalInconsistencyException / 无效的行数
我有一个视图CountriesListScreen
,我正在向它传递一个项目列表。
这就是我正在做的事情:
- 我首先显示
CountriesListScreen
,有 9 个列表项 - 然后我转到另一个视图,在那里我执行一个操作,它修改了项目列表
- 然后我返回
CountriesListScreen
,传递新的 listItems 对象,该对象现在有 5 个项目而不是 9 个
我得到了这个NSInternalInconsistencyException
,我不知道如何解决:
*** Assertion failure in -[_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView _Bug_Detected_In_Client_Of_UITableView_Invalid_Number_Of_Rows_In_Section:], UITableView.m:2471 2021-06-11 18:22:55.908398+0300 iosApp[6525:5802640] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason :'无效更新:第0节中的行数无效。更新后现有节中包含的行数(9)必须等于更新前该节中包含的行数(9),加或减从该部分插入或删除的行数(0 插入,4 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。
如果我理解正确,SwiftUI 会触发错误,因为它意识到项目列表已更改,而视图中并未发生更改。
如何安全地使用不同数量的项目重新绘制列表,而不会触发此错误?
更新:(提供更多上下文)
涉及的观点有3种:
- 的父级
CountriesListScreen
,我们称之为它MainView
,它引用了一个ObservedObject
,它listItems
作为一个属性 CountriesListScreen
listItems
,它从其父级接收作为参数- 第三个视图,它执行修改
listItems
(以及因此ObservedObject
)的操作,触发更新MainView