【问题标题】:How to save List state for View in TabView SwiftUI如何在 TabView SwiftUI 中保存视图的列表状态
【发布时间】:2020-03-13 09:39:15
【问题描述】:

我在 SwiftUI 中有一个带有标签的 TabView。当我从一个 FirstView 滚动列表并点击另一个选项卡并切换回 FirstView 时,我在 FirstView 中的列表会自动重绘并滚动到顶部。如何解决这个问题。

enter link description here

这是第一视图

 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)
}

【问题讨论】:

  • 提供一些可以运行和调试的最小代码。这将有助于提供快速答案。
  • @FelixMarianayagam 添加了
  • 应该可以。

标签: swiftui swiftui-list


【解决方案1】:

我认为通过 SwiftUI 是不可能的。另一种方法是在 UIKit 中创建 tabview 并在 SwiftUI 中使用它。

我创建了一个快速示例,说明如何实现这一目标以及它如何解决您的问题。如果您有任何其他问题,请告诉我。

我已将代码上传到 GitHub。 https://github.com/subhan5/TabTest

在上传的代码中,UITab 文件夹包含通过 UIKit 创建的 tabview。 在 ContentView 中,我和 UIViewControllerRepresentable 一样转换并使用它。

【讨论】:

  • 这是一个错误吗? Apple 没有提供 Tabs 的正确操作?
  • 是的,Apple 目前还没有为 SwiftUI 提供它。
  • 但是如果我想在SwiftUI中创建非常漂亮的自定义标签栏,我不能在保持状态的同时使用它吗?
  • 目前,SwiftUI 有这个限制。
【解决方案2】:

这里描述的 UITableViewConfigurator 是可能的:Scroll SwiftUI List to new selection

当然……这使用 UIViewControllerRepresentable....

【讨论】:

    【解决方案3】:

    我也有同样的问题,找到了这个解决方案:https://kavsoft.dev/SwiftUI_2.0/Tab_Bar

    基本上,您可以只隐藏一个选项卡的内容,而不是用另一个内容视图替换它。我认为这个解决方案有点棘手,但很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2020-08-15
      • 2013-07-22
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      相关资源
      最近更新 更多