我正在尝试制作一个双向 TabView (带有.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))),其数据源会随着时间的推移而改变。
下面的代码描述了预期的结果:
class TabsViewModel: ObservableObject {
@Published var items = [-2, -1, 0, 1, 2]
@Published var selectedItem = 2 {
didSet {
if let index = items.firstIndex(of: selectedItem), index >= items.count - 2 {
items = items + [items.last! + 1]
items.removeFirst()
}
if let index = items.firstIndex(of: selectedItem), index <= 1 {
items = [items.first! - 1] + items
items.removeLast()
}
}
}
}
struct TabsView: View {
@StateObject var vm = TabsViewModel() …Run Code Online (Sandbox Code Playgroud)