From 2b304cd7aa5c65b41cfd800f392f51a56fd4aedf Mon Sep 17 00:00:00 2001 From: Andrea Busi Date: Mon, 28 Sep 2020 10:24:40 +0200 Subject: [PATCH] feat: Improve country picker selection --- .../SeismicSettingsViewController.swift | 7 +++++-- .../Shared/EQNGenericPickerViewController.swift | 7 ++++++- .../Models/Networks/EQNSeismicNetwork.swift | 13 +++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift index 21fd123..94b62b7 100644 --- a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift @@ -44,10 +44,13 @@ class SeismicSettingsViewController: UIViewController { // load saved country (if exists) let savedCountry = UserDefaults.standard.object(forKey: IMPOSTAZIONE_NAZIONE_RETI_SISMICHE) as? String - countryTextField.text = EQNData.seismic(for: savedCountry)?.country + selectedNetwork = EQNData.seismic(for: savedCountry) + countryTextField.text = selectedNetwork?.country countryTextField.inputView = picker.view - picker.configure(with: networks) { [unowned self] (network) in + + let selectedIndex: Int? = selectedNetwork != nil ? networks.firstIndex(of: selectedNetwork!) : nil + picker.configure(with: networks, selectedIndex: selectedIndex) { [unowned self] (network) in guard let network = network as? EQNSeismicNetwork else { return } self.view.endEditing(true) diff --git a/Sources/Earthquake Network/Controllers/Shared/EQNGenericPickerViewController.swift b/Sources/Earthquake Network/Controllers/Shared/EQNGenericPickerViewController.swift index 8075f0f..38df755 100644 --- a/Sources/Earthquake Network/Controllers/Shared/EQNGenericPickerViewController.swift +++ b/Sources/Earthquake Network/Controllers/Shared/EQNGenericPickerViewController.swift @@ -68,11 +68,16 @@ class EQNGenericPickerViewController: UIViewController, UIPickerViewDelegate, UI // MARK: - Public - public func configure(with items: [PickerRepresentable], completion: @escaping DoneCompletion) { + public func configure(with items: [PickerRepresentable], selectedIndex: Int? = nil, completion: @escaping DoneCompletion) { self.onCompletion = completion self.items = items self.selectedIndex = items.count > 0 ? 1 : nil self.pickerView.reloadAllComponents() + + if let selectedIndex = selectedIndex, 0.. Bool { + if let anObject = object as? EQNSeismicNetwork { + return anObject.acronym.lowercased() == acronym.lowercased() + } + return false + } + + override var hash: Int { + acronym.hash + } }