From 7d0fe4c30675d04f2ade0e0daaefaea4a11dcb21 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 21 Dec 2022 09:31:27 -0600 Subject: [PATCH] fixed picker issue Signed-off-by: Matt Bruce --- VDSSample/Protocols/PickerBase.swift | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/VDSSample/Protocols/PickerBase.swift b/VDSSample/Protocols/PickerBase.swift index d81a81b..27989fa 100644 --- a/VDSSample/Protocols/PickerBase.swift +++ b/VDSSample/Protocols/PickerBase.swift @@ -49,6 +49,7 @@ public class PickerSelectorView: UIStackView, Picker public var text: String = "" { didSet { label.text = text + updateSelectedIndex() } } public var items: [EnumType] { @@ -64,7 +65,9 @@ public class PickerSelectorView: UIStackView, Picker self.axis = .horizontal self.distribution = .fillEqually self.alignment = .fill + text = title label.text = title + updateSelectedIndex() addArrangedSubview(label) addArrangedSubview(button) button @@ -79,6 +82,11 @@ public class PickerSelectorView: UIStackView, Picker }.store(in: &subscribers) } + func updateSelectedIndex() { + guard let foundTextIndex = items.firstIndex(where: { "\($0.rawValue)" == text }) else { return } + selectedIndex = foundTextIndex //add one since we always have a empty space + } + public required init(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -88,14 +96,13 @@ public class PickerSelectorView: UIStackView, Picker } public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { - items.count + 1 + items.count } public func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { - guard row - 1 >= 0 else { return } selectedIndex = row - onPickerDidSelect?(items[row-1]) - text = "\(items[row-1].rawValue)" + onPickerDidSelect?(items[row]) + text = "\(items[row].rawValue)" pickerView.isHidden = true } @@ -109,7 +116,7 @@ public class PickerSelectorView: UIStackView, Picker } private func title(for row: Int) -> String { - guard row > 0, let item = items[row-1].rawValue as? String else { return "" } + guard let item = items[row].rawValue as? String else { return "" } return item }