gpt4 book ai didi

ios - 如何从 SwiftUI 中的列表获取屏幕行?

转载 作者:行者123 更新时间:2023-12-01 18:03:41 28 4
gpt4 key购买 nike

我想放一个 Text对于所有可见行中其当前索引的列表中的每个可见(在屏幕边界内)行。

我这里有一个例子。如果我有一个列表一次显示 3 行,并且最初我希望它显示如下:

___|___
A | 0
B | 1
C | 2
-------

如果我向下滚动列表,并且 A 退出屏幕,那么它就像
___|___
B | 0
C | 1
D | 2
-------

知道我该怎么做吗?

另外,我以前用过 UITableView.visibleCells获取屏幕上的可见单元格,但我在 SwiftUI 中找不到类似的东西。我究竟如何才能在 SwiftUI 中仅提供索引的列表中获得可见行?

希望有人能指引我到正确的地方。非常感谢!

最佳答案

您可以使用 onAppearonDisappear函数来维护可见行的列表,然后使用这些来查找可见索引。

struct ContentView: View {
let rows = (Unicode.Scalar("A").value...Unicode.Scalar("Z").value)
.map { String(Unicode.Scalar($0)!) }

@State var visibleRows: Set<String> = []

var body: some View {
List(rows, id: \.self) { row in
HStack {
Text(row)
.padding(40)
.onAppear { self.visibleRows.insert(row) }
.onDisappear { self.visibleRows.remove(row) }
}
Spacer()
Text(self.getVisibleIndex(for: row)?.description ?? "")
}
}

func getVisibleIndex(for row: String) -> Int? {
visibleRows.sorted().firstIndex(of: row)
}
}

关于ios - 如何从 SwiftUI 中的列表获取屏幕行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61199317/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com