Bird
Raised Fist0
iOS Swiftmobile~20 mins

First iOS app in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
First iOS App Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What will this SwiftUI code display?
Consider this SwiftUI view code. What text will appear on the screen when the app runs?
iOS Swift
import SwiftUI

struct ContentView: View {
  var body: some View {
    Text("Welcome to my first app!")
      .font(.title)
      .foregroundColor(.blue)
  }
}
AA large red text saying 'Welcome to my first app!'
BA small blue text saying 'Welcome to my first app!'
CA large blue text saying 'Welcome to my first app!'
DNo text appears because of a syntax error
Attempts:
2 left
💡 Hint
Look at the modifiers .font(.title) and .foregroundColor(.blue).
❓ navigation
intermediate
2:00remaining
What happens when this button is tapped?
This SwiftUI code shows a button inside a NavigationView. What happens when the user taps the button?
iOS Swift
import SwiftUI

struct ContentView: View {
  var body: some View {
    NavigationView {
      NavigationLink("Go to Details", destination: Text("Details Screen"))
        .navigationTitle("Home")
    }
  }
}
AThe button shows an alert instead of navigating.
BThe button does nothing because NavigationLink is missing an action.
CThe app crashes due to missing navigation controller.
DThe app navigates to a new screen showing 'Details Screen' text.
Attempts:
2 left
💡 Hint
NavigationLink creates a tappable link to a destination view.
❓ lifecycle
advanced
2:00remaining
When is the body property of a SwiftUI View recomputed?
Given this SwiftUI view with a @State variable, when does the body property get recomputed?
iOS Swift
import SwiftUI

struct ContentView: View {
  @State private var count = 0

  var body: some View {
    VStack {
      Text("Count: \(count)")
      Button("Increment") {
        count += 1
      }
    }
  }
}
AOnly when the app restarts.
BEach time the count variable changes, the body recomputes to update the UI.
CEvery second automatically, regardless of state changes.
DOnly once when the view is created; state changes do not affect body.
Attempts:
2 left
💡 Hint
Think about how @State triggers UI updates.
📝 Syntax
advanced
2:00remaining
What error does this SwiftUI code produce?
Examine this SwiftUI code snippet. What error will it cause when compiling?
iOS Swift
import SwiftUI

struct ContentView: View {
  var body: some View {
    VStack {
      Text("Hello")
      Button("Tap me") {
        count += 1
      }
    }
  }
}
ARuntime error: count variable not initialized.
BNo error; code runs fine.
CSyntax error: Missing closure for Button action.
DType error: Text cannot be inside VStack.
Attempts:
2 left
💡 Hint
Check the Button syntax and its action closure.
🔧 Debug
expert
3:00remaining
Why does this SwiftUI view not update the text when the button is tapped?
This code intends to update the displayed text when the button is tapped, but it does not. Why?
iOS Swift
import SwiftUI

struct ContentView: View {
  var count = 0

  var body: some View {
    VStack {
      Text("Count: \(count)")
      Button("Increment") {
        count += 1
      }
    }
  }
}
ABecause count is a regular variable, not a @State property, so changes don't trigger UI updates.
BBecause the Button label is incorrect and does not trigger the action.
CBecause the Text view is outside the VStack.
DBecause the count variable is declared as a constant.
Attempts:
2 left
💡 Hint
Think about how SwiftUI tracks changes to update the UI.

Practice

(1/5)
1. What does the Text view do in a basic SwiftUI iOS app?
easy
A. It displays a string of text on the screen.
B. It creates a button that can be tapped.
C. It starts the app when launched.
D. It handles user input from the keyboard.

Solution

  1. Step 1: Understand the role of Text in SwiftUI

    The Text view is used to show words or sentences on the screen.
  2. Step 2: Differentiate from other views

    Unlike Button, which handles taps, Text only displays static text.
  3. Final Answer:

    It displays a string of text on the screen. -> Option A
  4. Quick Check:

    Text shows text [OK]
Hint: Remember: Text shows words, Button reacts to taps [OK]
Common Mistakes:
  • Confusing Text with Button
  • Thinking Text starts the app
  • Assuming Text handles user input
2. Which of the following is the correct way to create a button with the label "Tap me" in SwiftUI?
easy
A. Button("Tap me") { print("Tapped") }
B. Button(Text("Tap me")) { print("Tapped") }
C. Button { print("Tapped") } label: { Text("Tap me") }
D. Button(action: print("Tapped"), label: "Tap me")

Solution

  1. Step 1: Recall SwiftUI Button syntax

    The correct syntax uses a trailing closure for the action and a label closure for the button text.
  2. Step 2: Match syntax to options

    Button { print("Tapped") } label: { Text("Tap me") } matches the correct pattern: Button { action } label: { Text("label") }.
  3. Final Answer:

    Button { print("Tapped") } label: { Text("Tap me") } -> Option C
  4. Quick Check:

    Button syntax uses closures for action and label [OK]
Hint: Button uses closures: action first, label second [OK]
Common Mistakes:
  • Using Button with string only as label
  • Putting action inside label
  • Incorrect parameter order
3. What will be displayed when this SwiftUI code runs?
struct ContentView: View {
  @State private var count = 0
  var body: some View {
    VStack {
      Text("Count: \(count)")
      Button("Increment") {
        count += 1
      }
    }
  }
}
medium
A. A text showing "Count: 0" and a button labeled "Increment" that increases count when tapped.
B. Only a button labeled "Increment" with no text displayed.
C. A text showing "Count: 1" initially and a button labeled "Increment".
D. The app will crash due to missing @State annotation.

Solution

  1. Step 1: Understand @State usage

    The variable count is marked with @State, so changes update the UI.
  2. Step 2: Analyze initial UI

    Initially, count is 0, so text shows "Count: 0" and button labeled "Increment" is visible.
  3. Final Answer:

    A text showing "Count: 0" and a button labeled "Increment" that increases count when tapped. -> Option A
  4. Quick Check:

    @State variable updates UI on change [OK]
Hint: @State variables start at initial value and update UI [OK]
Common Mistakes:
  • Thinking count starts at 1
  • Assuming no text is shown
  • Believing app crashes without @State
4. Identify the error in this SwiftUI code snippet:
struct ContentView: View {
  var body: some View {
    Button("Click me") {
      print("Clicked")
    }
  }
}
medium
A. The body property must return some View explicitly.
B. No syntax error; the code is correct.
C. The body property must be marked with @ViewBuilder.
D. The Button label should be a closure, not a string.

Solution

  1. Step 1: Check body property syntax

    In SwiftUI, the body computed property implicitly returns the view using @ViewBuilder.
  2. Step 2: Verify the Button syntax

    Button("Click me") { print("Clicked") } is valid; no explicit return needed even for multi-line expressions.
  3. Final Answer:

    No syntax error; the code is correct. -> Option B
  4. Quick Check:

    SwiftUI body implicitly returns views [OK]
Hint: SwiftUI body uses implicit return via ViewBuilder [OK]
Common Mistakes:
  • Thinking an explicit return is required
  • Believing @ViewBuilder must be marked explicitly
  • Assuming Button requires closure label only
5. You want to create a simple iOS app that shows "Hello, SwiftUI!" and a button that changes the text to "Button tapped!" when pressed. Which code snippet correctly implements this behavior?
hard
A. struct ContentView: View { @State private var message = "Hello, SwiftUI!" var body: some View { VStack { Text("Hello, SwiftUI!") Button("Tap") { message = "Button tapped!" } } } }
B. struct ContentView: View { var message = "Hello, SwiftUI!" var body: some View { VStack { Text(message) Button("Tap") { message = "Button tapped!" } } } }
C. struct ContentView: View { var message = "Hello, SwiftUI!" var body: some View { VStack { Text(message) Button { message = "Button tapped!" } label: { Text("Tap") } } } }
D. struct ContentView: View { @State private var message = "Hello, SwiftUI!" var body: some View { VStack { Text(message) Button("Tap") { message = "Button tapped!" } } } }

Solution

  1. Step 1: Use @State for mutable text

    The text changes when the button is tapped, so message must be a @State variable.
  2. Step 2: Update text on button tap

    The button action updates message to "Button tapped!" and the UI reflects this change.
  3. Step 3: Verify correct syntax

    struct ContentView: View { @State private var message = "Hello, SwiftUI!" var body: some View { VStack { Text(message) Button("Tap") { message = "Button tapped!" } } } } uses @State private var, a VStack with Text(message), and a button with label and action correctly.
  4. Final Answer:

    A -> Option D
  5. Quick Check:

    @State variable updates text on button tap [OK]
Hint: Use @State for text that changes on button tap [OK]
Common Mistakes:
  • Not using @State for mutable text
  • Using constant text in Text view
  • Incorrect button label or action syntax
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard