From aced71038860f1a447afa9dc62f7dd51a190e1eb Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 20 Jan 2025 18:26:19 -0600 Subject: [PATCH] added a segmented control to select service state Signed-off-by: Matt Bruce --- .../EmployeesViewController.swift | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift index 87aaafa..78bed60 100644 --- a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift +++ b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift @@ -11,6 +11,7 @@ import Combine class EmployeesViewController: UIViewController { private let tableView = UITableView() private let activityIndicator = UIActivityIndicatorView(style: .large) + private let modeSegmentedControl = UISegmentedControl(items: EmployeeServiceMode.allCases.map{ $0.rawValue } ) private let viewModel = EmployeesViewModel() private var cancellables = Set() @@ -18,8 +19,7 @@ class EmployeesViewController: UIViewController { super.viewDidLoad() setupUI() bindViewModel() - viewModel.changeMode(to: .empty) - //viewModel.fetchEmployees() + viewModel.fetchEmployees() } private func setupUI() { @@ -35,6 +35,11 @@ class EmployeesViewController: UIViewController { // Configure Activity Indicator activityIndicator.center = view.center view.addSubview(activityIndicator) + + // Configure Mode Selector + modeSegmentedControl.selectedSegmentIndex = 0 + modeSegmentedControl.addTarget(self, action: #selector(onServiceModeChange), for: .valueChanged) + navigationItem.titleView = modeSegmentedControl } private func bindViewModel() { @@ -66,6 +71,17 @@ class EmployeesViewController: UIViewController { .store(in: &cancellables) } + @objc private func onServiceModeChange(_ sender: UISegmentedControl) { + let selectedMode: EmployeeServiceMode + switch sender.selectedSegmentIndex { + case 0: selectedMode = .production + case 1: selectedMode = .malformed + case 2: selectedMode = .empty + default: return + } + viewModel.changeMode(to: selectedMode) + } + private func updateFooter() { var message: String? { guard !viewModel.isLoading else { return nil }