Bird
Raised Fist0
iOS Swiftmobile~20 mins

Toggle switch in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Toggle Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
Toggle switch state change effect
What will be the text displayed in the label after toggling the switch from OFF to ON?
iOS Swift
import SwiftUI

struct ContentView: View {
  @State private var isOn = false

  var body: some View {
    VStack {
      Toggle("Enable Feature", isOn: $isOn)
      Text(isOn ? "Feature is ON" : "Feature is OFF")
    }
    .padding()
  }
}
AToggle is enabled
BFeature is OFF
CFeature is ON
DNo text is displayed
Attempts:
2 left
💡 Hint
The label text changes based on the toggle's boolean state.
❓ lifecycle
intermediate
1:30remaining
Toggle switch initial state in UIKit
In UIKit, if you create a UISwitch programmatically and do not set its state, what is the default state of the switch when it appears?
ARandom state each time
BOFF (false)
CUndefined, causes a crash
DON (true)
Attempts:
2 left
💡 Hint
Think about the default boolean value for UISwitch's isOn property.
📝 Syntax
advanced
2:00remaining
Correct SwiftUI Toggle binding syntax
Which option correctly binds a Toggle to a @State variable named isEnabled?
iOS Swift
import SwiftUI

struct MyView: View {
  @State private var isEnabled = false

  var body: some View {
    // Toggle code here
  }
}
AToggle("Enable", isOn: $isEnabled)
BToggle("Enable", isOn: Binding(isEnabled))
CToggle("Enable", isOn: isEnabled)
DToggle("Enable", isOn: Binding($isEnabled))
Attempts:
2 left
💡 Hint
Use the $ prefix to pass a binding to the Toggle.
🔧 Debug
advanced
2:30remaining
Why does the UISwitch not update the label?
Given this UIKit code, why does the label not update when the switch is toggled? let toggle = UISwitch() let label = UILabel() func setup() { toggle.addTarget(self, action: #selector(switchChanged), for: .valueChanged) } @objc func switchChanged() { label.text = toggle.isOn ? "ON" : "OFF" } // toggle and label are added to the view What is the most likely reason?
AThe addTarget method is called after the switch is toggled
BThe switchChanged method is not marked @objc
CThe toggle's isOn property does not change automatically
DThe label is not added to the view hierarchy
Attempts:
2 left
💡 Hint
If the label is not visible, text changes won't show.
🧠 Conceptual
expert
3:00remaining
Accessibility for Toggle switches
Which practice best improves accessibility for a toggle switch in SwiftUI?
AAdd .accessibilityLabel("Enable feature") to the Toggle
BUse a Text view instead of Toggle for better screen reader support
CDisable the toggle to prevent accidental changes
DSet the toggle color to red for visibility
Attempts:
2 left
💡 Hint
Accessibility labels help screen readers describe controls.

Practice

(1/5)
1. What does a UISwitch control in an iOS app?
easy
A. It lets users toggle between on and off states.
B. It displays a list of options to select from.
C. It shows a progress bar for tasks.
D. It opens a new screen when tapped.

Solution

  1. Step 1: Understand the purpose of UISwitch

    A UISwitch is designed to let users turn a setting on or off with a simple tap.
  2. Step 2: Compare with other UI controls

    Unlike lists or progress bars, UISwitch specifically toggles between two states: on and off.
  3. Final Answer:

    It lets users toggle between on and off states. -> Option A
  4. Quick Check:

    UISwitch = toggle on/off [OK]
Hint: UISwitch always toggles between two states [OK]
Common Mistakes:
  • Confusing UISwitch with buttons that open new screens
  • Thinking UISwitch shows progress or lists
  • Assuming UISwitch can select multiple options
2. Which of the following is the correct way to create a UISwitch in Swift?
easy
A. let toggle = UISwitch.new()
B. let toggle = Switch()
C. let toggle = UISwitch()
D. let toggle = UISwitch.create()

Solution

  1. Step 1: Recall UISwitch initialization syntax

    In Swift, UI elements like UISwitch are created by calling their initializer with parentheses.
  2. Step 2: Check each option

    Only UISwitch() is the correct initializer. The others use invalid methods or class names.
  3. Final Answer:

    let toggle = UISwitch() -> Option C
  4. Quick Check:

    Initialize UISwitch with UISwitch() [OK]
Hint: Use parentheses to create UISwitch instance [OK]
Common Mistakes:
  • Using incorrect class name like Switch
  • Trying to call .new() or .create() methods
  • Omitting parentheses when creating UISwitch
3. What will be printed when this Swift code runs?
let toggle = UISwitch()
toggle.isOn = true
print(toggle.isOn)
medium
A. Compilation error
B. false
C. nil
D. true

Solution

  1. Step 1: Understand the isOn property

    The isOn property of UISwitch indicates if the switch is on (true) or off (false).
  2. Step 2: Analyze the code

    The code sets toggle.isOn = true and then prints toggle.isOn, so it will print true.
  3. Final Answer:

    true -> Option D
  4. Quick Check:

    Setting isOn true prints true [OK]
Hint: Print isOn after setting it to see true/false [OK]
Common Mistakes:
  • Assuming default is false without setting
  • Confusing isOn with other properties
  • Expecting nil or error from print
4. Identify the error in this Swift code that tries to detect switch changes:
let toggle = UISwitch()
toggle.addTarget(self, action: #selector(switchChanged), for: .valueChanged)

@objc func switchChanged() {
    print("Switch toggled")
}
medium
A. Wrong event type used in addTarget
B. Missing parameter in switchChanged method
C. UISwitch cannot use addTarget
D. Missing UISwitch initialization

Solution

  1. Step 1: Check addTarget usage

    The addTarget method requires the action method to accept the sender parameter.
  2. Step 2: Analyze switchChanged method signature

    The method switchChanged() has no parameters but should accept _ sender: UISwitch.
  3. Final Answer:

    Missing parameter in switchChanged method -> Option B
  4. Quick Check:

    Action method needs sender parameter [OK]
Hint: Action methods need sender parameter for addTarget [OK]
Common Mistakes:
  • Omitting sender parameter in action method
  • Using wrong event type like .touchUpInside
  • Thinking UISwitch can't use addTarget
5. You want to create a toggle switch that updates a label text to "ON" or "OFF" when toggled. Which code snippet correctly implements this behavior?
let toggle = UISwitch()
let label = UILabel()

// Which switchChanged method is correct?
hard
A. @objc func switchChanged(_ sender: UISwitch) { label.text = sender.isOn ? "ON" : "OFF" }
B. @objc func switchChanged() { label.text = toggle.isOn ? "ON" : "OFF" }
C. @objc func switchChanged(_ sender: UISwitch) { if sender.isOn == false { label.text = "ON" } else { label.text = "OFF" } }
D. @objc func switchChanged(_ sender: UISwitch) { label.text = "ON" }

Solution

  1. Step 1: Check method signature and parameter

    The action method must accept the sender UISwitch to get its current state.
  2. Step 2: Verify label text update logic

    @objc func switchChanged(_ sender: UISwitch) { label.text = sender.isOn ? "ON" : "OFF" } uses a ternary operator to set label text to "ON" if switch is on, else "OFF", which is correct.
  3. Step 3: Review other options

    @objc func switchChanged() { label.text = toggle.isOn ? "ON" : "OFF" } lacks sender parameter; @objc func switchChanged(_ sender: UISwitch) { if sender.isOn == false { label.text = "ON" } else { label.text = "OFF" } } reverses ON/OFF logic; @objc func switchChanged(_ sender: UISwitch) { label.text = "ON" } always sets "ON" ignoring switch state.
  4. Final Answer:

    @objc func switchChanged(_ sender: UISwitch) { label.text = sender.isOn ? "ON" : "OFF" } -> Option A
  5. Quick Check:

    Use sender.isOn with ternary to update label [OK]
Hint: Use sender.isOn ? "ON" : "OFF" to update label [OK]
Common Mistakes:
  • Forgetting sender parameter in action method
  • Reversing ON and OFF text logic
  • Ignoring switch state and setting fixed text
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