0
0
iOS Swiftmobile~20 mins

TabView for tab navigation in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
TabView Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ui_behavior
intermediate
2:00remaining
TabView selection behavior
What will be the visible tab label when the user taps the second tab in this SwiftUI TabView?
iOS Swift
import SwiftUI

struct ContentView: View {
  @State private var selection = 1

  var body: some View {
    TabView(selection: $selection) {
      Text("Home Screen")
        .tabItem {
          Label("Home", systemImage: "house")
        }
        .tag(1)

      Text("Settings Screen")
        .tabItem {
          Label("Settings", systemImage: "gear")
        }
        .tag(2)
    }
  }
}
AThe tab label "Home" remains visible.
BBoth tab labels "Home" and "Settings" are visible simultaneously.
CThe tab label "Settings" becomes visible.
DNo tab label is visible after tapping.
Attempts:
2 left
💡 Hint
The selection state controls which tab is active and visible.
📝 Syntax
intermediate
2:00remaining
Correct syntax for TabView with three tabs
Which option shows the correct SwiftUI code to create a TabView with three tabs labeled "First", "Second", and "Third"?
A
TabView {
  Text("First Tab").tabItem { Label("First", systemImage: "1.circle") }
  Text("Second Tab").tabItem { Label("Second", systemImage: "2.circle") }
  Text("Third Tab").tabItem { Label("Third", systemImage: "3.circle") }
}
B
TabView {
  Text("First Tab").tabItem { Label("First") }
  Text("Second Tab").tabItem { Label("Second") }
  Text("Third Tab").tabItem { Label("Third") }
}
C
TabView {
  Text("First Tab").tabItem { "First" }
  Text("Second Tab").tabItem { "Second" }
  Text("Third Tab").tabItem { "Third" }
}
D
TabView {
  Text("First Tab").tabItem(Label("First", systemImage: "1.circle"))
  Text("Second Tab").tabItem(Label("Second", systemImage: "2.circle"))
  Text("Third Tab").tabItem(Label("Third", systemImage: "3.circle"))
}
Attempts:
2 left
💡 Hint
tabItem expects a view builder with a Label for accessibility and icon.
lifecycle
advanced
2:00remaining
State preservation in TabView
In a SwiftUI TabView with multiple tabs, what happens to the state of a tab's view when the user switches to another tab?
AThe state is preserved as long as the TabView remains in memory.
BThe state is reset to initial values every time the tab is selected.
CThe state is saved to disk and restored when the tab is selected again.
DThe state is lost immediately when switching tabs.
Attempts:
2 left
💡 Hint
Think about how SwiftUI keeps views alive inside TabView.
navigation
advanced
2:00remaining
Programmatic tab selection
How can you programmatically switch to the third tab in a SwiftUI TabView?
iOS Swift
import SwiftUI

struct ContentView: View {
  @State private var selection = 1

  var body: some View {
    VStack {
      TabView(selection: $selection) {
        Text("First Tab").tabItem { Label("First", systemImage: "1.circle") }.tag(1)
        Text("Second Tab").tabItem { Label("Second", systemImage: "2.circle") }.tag(2)
        Text("Third Tab").tabItem { Label("Third", systemImage: "3.circle") }.tag(3)
      }
      Button("Go to Third Tab") {
        // What code goes here?
      }
    }
  }
}
Aselection = 3
Bself.selection = 3
Cselection.set(3)
DTabView.selection = 3
Attempts:
2 left
💡 Hint
Use the @State variable to update the selected tab.
🔧 Debug
expert
2:00remaining
Why does the TabView not switch tabs?
Given this SwiftUI code, why does tapping the tab items not change the visible tab?
iOS Swift
import SwiftUI

struct ContentView: View {
  @State private var selection = 1

  var body: some View {
    TabView(selection: .constant(selection)) {
      Text("First Tab").tabItem { Label("First", systemImage: "1.circle") }.tag(1)
      Text("Second Tab").tabItem { Label("Second", systemImage: "2.circle") }.tag(2)
    }
  }
}
AThe @State variable selection is not initialized.
BThe tags are not unique integers.
CThe tabItem labels are missing accessibility identifiers.
DThe selection binding uses .constant, so it is read-only and does not update.
Attempts:
2 left
💡 Hint
Check how the selection binding is passed to TabView.