|
@ -33,8 +33,8 @@ class TablePickerViewController: UIViewController { |
|
|
|
|
|
|
|
|
@IBOutlet weak var mainview: UIView! |
|
|
@IBOutlet weak var mainview: UIView! |
|
|
|
|
|
|
|
|
var data: [String] = [] |
|
|
|
|
|
var filteredPlaces: [String] = [] { |
|
|
|
|
|
|
|
|
var data: [ExchangeRateModel] = [] |
|
|
|
|
|
var filteredPlaces: [ExchangeRateModel] = [] { |
|
|
didSet { |
|
|
didSet { |
|
|
self.tableVIew.reloadData() |
|
|
self.tableVIew.reloadData() |
|
|
self.setNoResultText() |
|
|
self.setNoResultText() |
|
@ -43,9 +43,9 @@ class TablePickerViewController: UIViewController { |
|
|
} |
|
|
} |
|
|
var allowMultipleSelection = false |
|
|
var allowMultipleSelection = false |
|
|
var allowSelection = true |
|
|
var allowSelection = true |
|
|
var doneAction: (([String]) -> ())? |
|
|
|
|
|
var defaultSelectedData: [String] = [] |
|
|
|
|
|
var showFlag = false |
|
|
|
|
|
|
|
|
var doneAction: (([ExchangeRateModel]) -> ())? |
|
|
|
|
|
var defaultSelectedData: [ExchangeRateModel] = [] |
|
|
|
|
|
|
|
|
var searchText = "" |
|
|
var searchText = "" |
|
|
var type: TablePickerViewTitle? |
|
|
var type: TablePickerViewTitle? |
|
|
|
|
|
|
|
@ -104,13 +104,7 @@ class TablePickerViewController: UIViewController { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private func addGradientView() { |
|
|
private func addGradientView() { |
|
|
// let gradientview = GradientView() |
|
|
|
|
|
// gradientview.leftColor = Constants.gradientviewLeftColor |
|
|
|
|
|
// gradientview.rightColor = Constants.gradientviewRightColor |
|
|
|
|
|
// if let navbarFrame = self.navigationController?.navigationBar.frame { |
|
|
|
|
|
// gradientview.frame = navbarFrame |
|
|
|
|
|
// } |
|
|
|
|
|
// self.navigationController?.navigationBar.addSubview(gradientview) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@objc private func search(sender: UITextField) { |
|
|
@objc private func search(sender: UITextField) { |
|
@ -122,21 +116,17 @@ class TablePickerViewController: UIViewController { |
|
|
} |
|
|
} |
|
|
self.filteredPlaces = self.data.filter({ |
|
|
self.filteredPlaces = self.data.filter({ |
|
|
return searchString.isEmpty || |
|
|
return searchString.isEmpty || |
|
|
$0.lowercased().contains(searchString.lowercased()) |
|
|
|
|
|
|
|
|
($0.country ?? "").lowercased().contains(searchString.lowercased()) |
|
|
}).sorted(by: { (a, _) -> Bool in |
|
|
}).sorted(by: { (a, _) -> Bool in |
|
|
return a.lowercased().hasPrefix(searchString.lowercased()) |
|
|
|
|
|
|
|
|
return (a.country?.lowercased() ?? "").hasPrefix(searchString.lowercased()) |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// private func getNotificationName() -> Notification.Name { |
|
|
|
|
|
//// return Notification.Name.init(NotificationNames.from) |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// MARK: IBActions |
|
|
// MARK: IBActions |
|
|
|
|
|
|
|
|
@IBAction func close(_ sender: Any?) { |
|
|
@IBAction func close(_ sender: Any?) { |
|
|
let selectedIndexPaths = self.tableVIew.indexPathsForSelectedRows ?? self.tableVIew.indexPathForSelectedRow.map({[$0]}) |
|
|
let selectedIndexPaths = self.tableVIew.indexPathsForSelectedRows ?? self.tableVIew.indexPathForSelectedRow.map({[$0]}) |
|
|
let selectedData = selectedIndexPaths?.flatMap { indexPath -> String? in |
|
|
|
|
|
|
|
|
let selectedData = selectedIndexPaths?.compactMap { indexPath -> ExchangeRateModel? in |
|
|
let value = filteredPlaces.elementAt(index: indexPath.row) |
|
|
let value = filteredPlaces.elementAt(index: indexPath.row) |
|
|
return value |
|
|
return value |
|
|
} |
|
|
} |
|
@ -159,29 +149,13 @@ class TablePickerViewController: UIViewController { |
|
|
|
|
|
|
|
|
extension TablePickerViewController: UITableViewDelegate { |
|
|
extension TablePickerViewController: UITableViewDelegate { |
|
|
|
|
|
|
|
|
func getImageCell(tableView: UITableView, indexPath: IndexPath) -> UITableViewCell { |
|
|
|
|
|
let cell = tableView.cellForRow(at: indexPath) as! TablePickerTableViewCell |
|
|
|
|
|
cell.selectedPlace = self.filteredPlaces.elementAt(index: indexPath.row) |
|
|
|
|
|
cell.setup() |
|
|
|
|
|
if !self.allowMultipleSelection { |
|
|
|
|
|
self.close(nil) |
|
|
|
|
|
} |
|
|
|
|
|
return cell |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func getTextCell(tableView: UITableView, indexPath: IndexPath) -> UITableViewCell { |
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
|
|
let cell = tableView.cellForRow(at: indexPath) as! TablePickerTableViewCell |
|
|
let cell = tableView.cellForRow(at: indexPath) as! TablePickerTableViewCell |
|
|
cell.selectedPlace = self.filteredPlaces.elementAt(index: indexPath.row) |
|
|
cell.selectedPlace = self.filteredPlaces.elementAt(index: indexPath.row) |
|
|
cell.setup() |
|
|
cell.setup() |
|
|
if !self.allowMultipleSelection { |
|
|
if !self.allowMultipleSelection { |
|
|
self.close(nil) |
|
|
self.close(nil) |
|
|
} |
|
|
} |
|
|
return cell |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
|
|
|
|
|
self.showFlag ? getImageCell(tableView: tableView, indexPath: indexPath) : |
|
|
|
|
|
getTextCell(tableView: tableView, indexPath: indexPath) |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { |
|
|
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { |
|
@ -189,16 +163,18 @@ extension TablePickerViewController: UITableViewDelegate { |
|
|
cell.selectedPlace = nil |
|
|
cell.selectedPlace = nil |
|
|
cell.setup() |
|
|
cell.setup() |
|
|
} else { |
|
|
} else { |
|
|
print("wtf happened here??") |
|
|
|
|
|
|
|
|
print("something happened here??") |
|
|
} |
|
|
} |
|
|
// cell?.accessoryType = .none |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { |
|
|
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { |
|
|
let onlyIndex = (filteredPlaces.elementAt(index: indexPath.row) ?? "").components(separatedBy: " ").first ?? "" |
|
|
|
|
|
if defaultSelectedData.contains(onlyIndex) { |
|
|
|
|
|
|
|
|
let onlyIndex = (filteredPlaces.elementAt(index: indexPath.row)?.countryCode ?? "") |
|
|
|
|
|
if onlyIndex == defaultSelectedData.first?.country ?? "" { |
|
|
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) |
|
|
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) |
|
|
} |
|
|
} |
|
|
|
|
|
// if defaultSelectedData.contains(onlyIndex) { |
|
|
|
|
|
// tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) |
|
|
|
|
|
// } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
|
@ -218,25 +194,18 @@ extension TablePickerViewController: UITableViewDataSource { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
|
|
return self.showFlag ? self.configureImageCel(tableView: tableView, indexPath: indexPath) : configureTextCell(tableView: tableView,indexPath: indexPath) |
|
|
|
|
|
|
|
|
return self.configureImageCell(tableView: tableView, indexPath: indexPath) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func configureImageCel(tableView: UITableView, indexPath: IndexPath) -> UITableViewCell { |
|
|
|
|
|
let cell = tableVIew.dequeueReusableCell(withIdentifier: "TablePickerWithImageTableViewCell", for: indexPath) as! TablePickerWithImageTableViewCell |
|
|
|
|
|
cell.title = filteredPlaces.elementAt(index: indexPath.row) |
|
|
|
|
|
let onlyIndex = filteredPlaces[indexPath.row].components(separatedBy: " ").first ?? "" |
|
|
|
|
|
cell.selectedPlace = self.defaultSelectedData.first |
|
|
|
|
|
cell.selectedPlaceShortCode = "korea" |
|
|
|
|
|
cell.setup() |
|
|
|
|
|
return cell |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func configureTextCell(tableView: UITableView, indexPath: IndexPath) -> UITableViewCell { |
|
|
|
|
|
|
|
|
func configureImageCell(tableView: UITableView, indexPath: IndexPath) -> UITableViewCell { |
|
|
let cell = tableVIew.dequeueReusableCell(withIdentifier: "TablePickerTableViewCell", for: indexPath) as! TablePickerTableViewCell |
|
|
let cell = tableVIew.dequeueReusableCell(withIdentifier: "TablePickerTableViewCell", for: indexPath) as! TablePickerTableViewCell |
|
|
cell.title = filteredPlaces.elementAt(index: indexPath.row) |
|
|
|
|
|
let onlyIndex = filteredPlaces[indexPath.row].components(separatedBy: " ").first ?? "" |
|
|
|
|
|
cell.selectedPlace = self.defaultSelectedData.first |
|
|
cell.selectedPlace = self.defaultSelectedData.first |
|
|
|
|
|
cell.place = self.filteredPlaces.elementAt(index: indexPath.row) |
|
|
cell.setup() |
|
|
cell.setup() |
|
|
return cell |
|
|
return cell |
|
|
|
|
|
|
|
|
|
|
|
// cell.title = filteredPlaces.elementAt(index: indexPath.row)?.country |
|
|
|
|
|
// let onlyIndex = filteredPlaces[indexPath.row] |
|
|
|
|
|
// cell.selectedPlaceShortCode = "korea" |
|
|
} |
|
|
} |
|
|
} |
|
|
} |