热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

在SwiftUI中获取ForEach中的索引

如何解决《在SwiftUI中获取ForEach中的索引》经验,为你挑选了1个好方法。

我有一个数组,并且要遍历它,以便根据数组值初始化视图,并希望根据数组项索引执行操作

当我遍历对象时

ForEach(array, id: \.self) { item in
  CustomView(item: item)
    .tapAction {
      self.doSomething(index) // Can't get index, so this won't work
    }
}

所以,我尝试了另一种方法

ForEach((0..

但随着第二种方法的问题是,当我改变阵列,例如,如果doSomething做以下

self.array = [1,2,3]

ForEach即使值已更改,视图也不会更改。我相信,发生这种情况是因为array.count没有改变。

有解决方案吗?提前致谢。



1> kontiki..:

这对我有用:

struct ContentView: View {
    @State private var array = [1, 1, 2]

    func doSomething(index: Int) {
        self.array = [1, 2, 3]
    }

    var body: some View {
        ForEach(0..


切勿使用0 .. 我相信,如果array中有相同的元素,则array.firstIndex(of:item)不会起作用,例如,如果array为`[1,1,1]`,它将为所有元素返回`0`。 。同样,对数组的每个元素执行此操作也不是很好的性能。我的数组是一个@State变量。`@State私有var数组:[Int] = [1、1、2]
请注意,[iOS 13 beta 5发行说明](https://developer.apple.com/documentation/ios_ipados_release_notes/ios_ipados_13_beta_5_release_notes?language=objc)发出以下有关将范围传递给`ForEach`的警告:不应传递在运行时更改的范围。如果您使用在运行时更改的变量来定义范围,则列表将根据初始范围显示视图,并忽略对该范围的任何后续更新。”
推荐阅读
author-avatar
木子0031970_651
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有