Как установить вкладку по умолчанию в SwiftUIs TabView?

У меня есть TabView в SwiftUI и я хочу, чтобы вторая вкладка была по умолчанию при запуске приложения.

Я не нашел никакой документации, обеспечивающей такое поведение, но это должно быть возможно. В большинстве приложений средняя вкладка является вкладкой по умолчанию.

TabView {
    QuestionView()
        .tabItem {
            Image(systemName: "questionmark")
            Text("Questions")
        }
    DataView()
        .tabItem {
            Image(systemName: "chart.bar.fill")
            Text("Data")
        }
    Text("Empty Tab right now")
        .tabItem {
            Image(systemName: "bolt.horizontal.fill")
            Text("Trend")
        }
}

person Seb    schedule 05.09.2019    source источник


Ответы (2)


@State private var selection = 3

TabView(selection:$selection) {
     QuestionView()
          .tabItem {
              Image(systemName: "questionmark")
              Text("Questions")
          }
          .tag(1)
     DataView()
          .tabItem {
              Image(systemName: "chart.bar.fill")
              Text("Data")
          }
          .tag(2)
     Text("Empty Tab right now")
          .tabItem {
              Image(systemName: "bolt.horizontal.fill")
              Text("Trend")
          }
          .tag(3)
}

В этом случае я установил по умолчанию выбранный третий Tab. Измените selection на желаемое Tab.

person Enea Dume    schedule 05.09.2019
comment
Начинайте номер тега с 0, если вы не хотите изменять selection вручную. - person ali6p; 25.12.2019

Определите State со значением по умолчанию и привяжите его к TabView:

@State var selection = 1
,,,

    TabView(selection: $selection) 

,,,

Затем назначьте tag каждому tabItem:

,,,
    .tabItem {
        Image(systemName: "bolt.horizontal.fill")
        Text("Trend")
    }.tag(1)
,,,

Теперь вы можете использовать их вместе, selection === tag

person Mojtaba Hosseini    schedule 05.09.2019
comment
Предпочел этот ответ для указания использования tag на каждом tabItem - person elight; 25.02.2020