如何在TabView SwiftUI中保存视图的列表状态
我在SwiftUI中有一个带有选项卡的选项卡视图。当我从一个FirstView滚动列表并点击另一个选项卡,然后切换回FirstView时,FirstView中的列表会自动重画并滚动到顶部。如何解决这个问题 这是第一视图如何在TabView SwiftUI中保存视图的列表状态,swiftui,swiftui-list,Swiftui,Swiftui List,我在SwiftUI中有一个带有选项卡的选项卡视图。当我从一个FirstView滚动列表并点击另一个选项卡,然后切换回FirstView时,FirstView中的列表会自动重画并滚动到顶部。如何解决这个问题 这是第一视图 var body: some View { NavigationView { List { ForEach(feed) { game in FeedCardItem(gameModel: game
var body: some View {
NavigationView {
List {
ForEach(feed) { game in
FeedCardItem(gameModel: game)
.frame(width: UIScreen.main.bounds.width - 30, height: 400)
}
}
.navigationBarTitle(Text("Новое сегодня"))
}
}
这是TabView实现
TabView (selection: $currentTab) {
FeedView().tabItem {
Image(systemName: currentTab == 0 ? "house.fill" : "house")
.renderingMode(.original)
.imageScale(.large)
}.tag(0)
RecommendationsView().tabItem {
Image(systemName: currentTab == 1 ? "gamecontroller.fill" : "gamecontroller")
.renderingMode(.original)
.imageScale(.large)
}.tag(1)
SearchView().tabItem {
Image(systemName: currentTab == 2 ? "flame.fill" : "flame")
.renderingMode(.original)
.imageScale(.large)
}.tag(2)
NotificationsView().tabItem {
Image(systemName: currentTab == 3 ? "bell.fill" : "bell")
.renderingMode(.original)
.imageScale(.large)
}.tag(3)
ProfileView().tabItem {
Image(systemName: currentTab == 4 ? "person.fill" : "person")
.renderingMode(.original)
.imageScale(.large)
}.tag(4)
}.edgesIgnoringSafeArea(.top)
}
我认为通过SwiftUI是不可能的。另一种方法是在UIKit中创建选项卡视图,并在SwiftUI中使用它 我创建了一个快速示例,说明如何实现这一点,以及如何解决您的问题。如果你还有其他问题,请告诉我 我已经将代码上传到GitHub。 在上传的代码中,文件夹UITab包含通过UIKit创建的选项卡视图。
在ContentView中,我将其转换为UIViewControllerRepresentable并使用它。可以使用UITableViewConfigurator,如下所述:
但是,当然……它使用UIViewControllerRepresentable……提供一些可以运行和调试的最小代码。这将有助于提供一个快速的答案。@FelixMarianayagam补充说应该这样做。这是一个bug吗?苹果没有提供标签的正确操作?是的,苹果到目前为止还没有为SwiftUI提供。但是如果我想在SwiftUI中创建非常漂亮的自定义标签栏,我不能在保持状态的同时使用它?到目前为止,SwiftUI有这个限制。