From 28805d8f113d3f59bdf07bc7c5bd3227b169516e Mon Sep 17 00:00:00 2001 From: gme_2 Date: Wed, 29 Aug 2018 18:17:55 +0900 Subject: [PATCH] bug soloved --- GMERemittance.xcodeproj/project.pbxproj | 20 ++ .../BankBranchPickerViewController.swift | 17 +- .../Library/BankPicker/BankPicker.storyboard | 267 ++++++++++++++++++ .../Library/BankPicker/BankPickerCell.swift | 27 ++ .../BankPicker/BankPickerViewController.swift | 189 +++++++++++++ .../SendMoneyPaymentModeViewController.swift | 23 +- 6 files changed, 525 insertions(+), 18 deletions(-) create mode 100644 GMERemittance/Library/BankPicker/BankPicker.storyboard create mode 100644 GMERemittance/Library/BankPicker/BankPickerCell.swift create mode 100644 GMERemittance/Library/BankPicker/BankPickerViewController.swift diff --git a/GMERemittance.xcodeproj/project.pbxproj b/GMERemittance.xcodeproj/project.pbxproj index db81b43d..15920d15 100644 --- a/GMERemittance.xcodeproj/project.pbxproj +++ b/GMERemittance.xcodeproj/project.pbxproj @@ -225,6 +225,9 @@ D90A9D5A2136942300A96E45 /* BankBranchPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D572136942300A96E45 /* BankBranchPickerCell.swift */; }; D90A9D5B2136942300A96E45 /* BankBranchPicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D90A9D582136942300A96E45 /* BankBranchPicker.storyboard */; }; D90A9D5C2136942300A96E45 /* BankBranchPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D592136942300A96E45 /* BankBranchPickerViewController.swift */; }; + D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D62213696E400A96E45 /* BankPickerCell.swift */; }; + D90A9D66213696E400A96E45 /* BankPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D63213696E400A96E45 /* BankPickerViewController.swift */; }; + D90A9D67213696E400A96E45 /* BankPicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D90A9D64213696E400A96E45 /* BankPicker.storyboard */; }; D90D55B121326DA800EEEE04 /* Reciepient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D55B021326DA800EEEE04 /* Reciepient.swift */; }; D90D55B3213270DD00EEEE04 /* ReciepientServcie.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D55B2213270DD00EEEE04 /* ReciepientServcie.swift */; }; D90D55CB21327CD600EEEE04 /* AddReciepientModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D55B821327CD600EEEE04 /* AddReciepientModuleInterface.swift */; }; @@ -604,6 +607,9 @@ D90A9D572136942300A96E45 /* BankBranchPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankBranchPickerCell.swift; sourceTree = ""; }; D90A9D582136942300A96E45 /* BankBranchPicker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = BankBranchPicker.storyboard; sourceTree = ""; }; D90A9D592136942300A96E45 /* BankBranchPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankBranchPickerViewController.swift; sourceTree = ""; }; + D90A9D62213696E400A96E45 /* BankPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankPickerCell.swift; sourceTree = ""; }; + D90A9D63213696E400A96E45 /* BankPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankPickerViewController.swift; sourceTree = ""; }; + D90A9D64213696E400A96E45 /* BankPicker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = BankPicker.storyboard; sourceTree = ""; }; D90D55B021326DA800EEEE04 /* Reciepient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Reciepient.swift; sourceTree = ""; }; D90D55B2213270DD00EEEE04 /* ReciepientServcie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReciepientServcie.swift; sourceTree = ""; }; D90D55B821327CD600EEEE04 /* AddReciepientModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddReciepientModuleInterface.swift; sourceTree = ""; }; @@ -1280,6 +1286,16 @@ path = BankBranchPicker; sourceTree = ""; }; + D90A9D61213696E400A96E45 /* BankPicker */ = { + isa = PBXGroup; + children = ( + D90A9D62213696E400A96E45 /* BankPickerCell.swift */, + D90A9D63213696E400A96E45 /* BankPickerViewController.swift */, + D90A9D64213696E400A96E45 /* BankPicker.storyboard */, + ); + path = BankPicker; + sourceTree = ""; + }; D90D55B621327CD600EEEE04 /* AddReciepient */ = { isa = PBXGroup; children = ( @@ -1924,6 +1940,7 @@ D96222FF212BD5E700B7A115 /* Library */ = { isa = PBXGroup; children = ( + D90A9D61213696E400A96E45 /* BankPicker */, D90A9D562136942300A96E45 /* BankBranchPicker */, D9CB49812132A58C00B7A124 /* ItemPickerView */, D9CB497A21329DCE00B7A124 /* CountryWithFlagPicker */, @@ -2263,6 +2280,7 @@ A25743B220243E6300727D1F /* Agent.storyboard in Resources */, D90A9D5B2136942300A96E45 /* BankBranchPicker.storyboard in Resources */, D90D55D321327CD600EEEE04 /* AddReciepient.storyboard in Resources */, + D90A9D67213696E400A96E45 /* BankPicker.storyboard in Resources */, 5565FF2D1FE275E5002934E9 /* SanFranciscoText-MediumItalic.otf in Resources */, D922D9492135124200D43053 /* SendMoneyPaymentMode.storyboard in Resources */, 5565FF241FE275E5002934E9 /* SanFranciscoText-HeavyItalic.otf in Resources */, @@ -2610,6 +2628,7 @@ D922D9AE21351B7400D43053 /* SendMoneyVerificationWireframe.swift in Sources */, A205DF5D201F38F60074B0C8 /* UserInfoViewController.swift in Sources */, 9F3332AF208DAE7600E39C9F /* ExchangeRateData.swift in Sources */, + D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */, A22F75032012006100B0FA15 /* likesTableViewCell.swift in Sources */, D922D91C2134DCF000D43053 /* EditReciepientModuleInterface.swift in Sources */, D922D98B21351AAE00D43053 /* SendMoneyExchangeRateWireframe.swift in Sources */, @@ -2769,6 +2788,7 @@ 042E7F2A2010E908006A5176 /* Cdd.swift in Sources */, D922D98D21351AAE00D43053 /* SendMoneyExchangeRateViewInterface.swift in Sources */, 9F2E45A2204E8A3F00D0B28C /* CalendarViewController.swift in Sources */, + D90A9D66213696E400A96E45 /* BankPickerViewController.swift in Sources */, 0428DC6A204910F9008355D7 /* WalletTransactionListViewController.swift in Sources */, 049E61A51FF0AE9D00817C76 /* UrlManager.swift in Sources */, A25CF60B2046A92C0029BC12 /* ReferringViewController.swift in Sources */, diff --git a/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift b/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift index 6eb7d768..f58db55b 100644 --- a/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift +++ b/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift @@ -30,6 +30,7 @@ class BankBranchPickerViewController: UIViewController { var data: [SendMoneyBankBranch] = [] + var selectedData : SendMoneyBankBranch? var filteredPlaces: [SendMoneyBankBranch] = [] { didSet { @@ -41,7 +42,7 @@ class BankBranchPickerViewController: UIViewController { var allowMultipleSelection = false var allowSelection = true - var doneAction: (([SendMoneyBankBranch]) -> ())? + var doneAction: (([SendMoneyBankBranch?]) -> ())? var defaultSelectedData: [SendMoneyBankBranch?] = [] var searchText = "" @@ -121,12 +122,12 @@ class BankBranchPickerViewController: UIViewController { @IBAction func close(_ sender: Any?) { // let selectedIndexPaths = self.tableVIew.indexPathsForSelectedRows ?? self.tableVIew.indexPathForSelectedRow.map({[$0]}) -// let selectedData = selectedIndexPaths?.flatMap { indexPath -> String? in +// let selectedData = selectedIndexPaths?.flatMap { indexPath -> SendMoneyBankBranch? in // let value = data[indexPath.row] // return value // } -// self.doneAction?(selectedData ?? []) -// self.dismiss(animated: true, completion: nil) + self.doneAction?([self.selectedData]) + self.dismiss(animated: true, completion: nil) } @@ -151,9 +152,11 @@ extension BankBranchPickerViewController: UITableViewDelegate { } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let cell = tableView.cellForRow(at: indexPath) - cell?.accessoryType = .checkmark - + self.selectedData = filteredPlaces.elementAt(index: indexPath.row) +// let cell = tableView.cellForRow(at: indexPath) +// +// cell?.accessoryType = .checkmark +// if !self.allowMultipleSelection { self.close(nil) } diff --git a/GMERemittance/Library/BankPicker/BankPicker.storyboard b/GMERemittance/Library/BankPicker/BankPicker.storyboard new file mode 100644 index 00000000..d70d442f --- /dev/null +++ b/GMERemittance/Library/BankPicker/BankPicker.storyboard @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + Roboto-Medium + + + Roboto-MediumItalic + + + Roboto-Regular + + + SanFranciscoDisplay-Regular + + + SanFranciscoDisplay-Semibold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GMERemittance/Library/BankPicker/BankPickerCell.swift b/GMERemittance/Library/BankPicker/BankPickerCell.swift new file mode 100644 index 00000000..5d14c4f4 --- /dev/null +++ b/GMERemittance/Library/BankPicker/BankPickerCell.swift @@ -0,0 +1,27 @@ +// +// TableViewPickerCell.swift +// Sipradi +// +// Created by shishir sapkota on 7/25/17. +// Copyright © 2017 Ekbana. All rights reserved. +// + +import UIKit + + +class BankPickerCell: UITableViewCell { + + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var checkImageView: UIImageView! + + var selectedPlace: String? + var place: String? + @IBOutlet weak var backgroundview: UIView! + + func setup() { + self.backgroundview.layer.cornerRadius = 8.0 + + self.titleLabel.text = place + self.checkImageView.isHidden = true + } +} diff --git a/GMERemittance/Library/BankPicker/BankPickerViewController.swift b/GMERemittance/Library/BankPicker/BankPickerViewController.swift new file mode 100644 index 00000000..244f7450 --- /dev/null +++ b/GMERemittance/Library/BankPicker/BankPickerViewController.swift @@ -0,0 +1,189 @@ +// +// ItemsPickerViewController.swift +// Sipradi +// +// Created by shishir sapkota on 7/25/17. +// Copyright © 2017 Ekbana. All rights reserved. +// + +import UIKit + + + +class BankPickerViewController: UIViewController { + + struct Constants { + static let seperatorColor = "#DFDFDF" + static let tintColor = UIColor.red + static let gradientviewLeftColor = UIColor.init(hex: "#FF0000") + static let gradientviewRightColor = UIColor.init(hex: "#9C272D") + } + + @IBOutlet weak var titleView: UIView! + @IBOutlet weak var tableVIew: UITableView! + @IBOutlet weak var searchTextField: UITextField! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var noResultFoundLabel: UILabel! + + @IBOutlet weak var mainview: UIView! + + + + var data: [SendMoneyBank] = [] + var selectedData: SendMoneyBank? + + var filteredPlaces: [SendMoneyBank] = [] { + didSet { + self.tableVIew.reloadData() + self.setNoResultText() + self.filteredPlaces.isEmpty ? (self.noResultFoundLabel.isHidden = false) : (self.noResultFoundLabel.isHidden = true) + } + } + + var allowMultipleSelection = false + var allowSelection = true + var doneAction: (([SendMoneyBank?]) -> ())? + var defaultSelectedData: [SendMoneyBank?] = [] + + var searchText = "" + var type: PickerTitle? + + override func viewDidLoad() { + super.viewDidLoad() + self.setupTableView() + + self.setupSearchService() + // self.setupSearchTextFieldUi() + self.setupPlaces() + self.titleView.layer.cornerRadius = 10 + self.mainview.layer.cornerRadius = 10 + setTitle() + } + + + private func setNoResultText() { + var text = "" + if let type = self.type { + text = "No matching \(type.rawValue) found for " + } else { + text = "No matching result found for " + } + self.noResultFoundLabel.text = text + "'\(searchText)'" + } + + private func setTitle() { + self.titleLabel.text = "Select " + (self.type?.rawValue ?? "Location").capitalized + } + + private func setupPlaces() { + self.filteredPlaces = self.data + } + + private func setupTableView() { + self.tableVIew.delegate = self + self.tableVIew.dataSource = self + self.tableVIew.separatorColor = UIColor.init(hex: Constants.seperatorColor) + self.tableVIew.allowsMultipleSelection = self.allowMultipleSelection + self.tableVIew.allowsSelection = self.allowSelection + } + + private func setupSearchTextFieldUi() { + // #imageLiteral(resourceName: "ic_search") + let searchIconImageView = UIImageView(image: #imageLiteral(resourceName: "ic_search")) + searchIconImageView.tintColor = Constants.tintColor + self.searchTextField.leftView = searchIconImageView + self.searchTextField.leftViewMode = .always + } + + + private func setupSearchService() { + self.searchTextField.addTarget(self, action: #selector(self.search(sender:)), for: UIControlEvents.editingChanged) + } + + + @objc private func search(sender: UITextField) { + let searchString = sender.text! + self.searchText = searchString + if searchString.isEmpty { + self.filteredPlaces = self.data + return + } + print("searchString : \(searchString), \(filteredPlaces)") + self.filteredPlaces = self.data.filter({ + return searchString.isEmpty || + ($0.name ?? "").lowercased().contains(searchString.lowercased()) + }).sorted(by: { (a, _) -> Bool in + return ((a.name ?? "").lowercased() ?? "").hasPrefix(searchString.lowercased()) + }) + print("after search") + print(filteredPlaces) + } + // MARK: IBActions + + @IBAction func close(_ sender: Any?) { +// let selectedIndexPaths = self.tableVIew.indexPathsForSelectedRows ?? self.tableVIew.indexPathForSelectedRow.map({[$0]}) +// let selectedData = selectedIndexPaths?.flatMap { indexPath -> SendMoneyBank? in +// let value = data[indexPath.row] +// return value +// } + self.doneAction?([selectedData]) + self.dismiss(animated: true, completion: nil) + } + + + + @IBAction func dismiss(_ sender: Any) { + self.dismiss(animated: true, completion: nil) + } + + @IBAction func clear(_ sender: Any) { + self.tableVIew.indexPathsForSelectedRows?.forEach({self.tableVIew.deselectRow(at: $0, animated: true)}) + self.tableVIew.indexPathForSelectedRow.map({self.tableVIew.deselectRow(at: $0, animated: true)}) + self.defaultSelectedData = [] + self.tableVIew.reloadData() + } + +} + +extension BankPickerViewController: UITableViewDelegate { + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 75 + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + self.selectedData = self.filteredPlaces.elementAt(index: indexPath.row) +// let cell = tableView.cellForRow(at: indexPath) +// cell?.accessoryType = .checkmark +// + if !self.allowMultipleSelection { + self.close(nil) + } + } + + func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { + let cell = tableView.cellForRow(at: indexPath) + cell?.accessoryType = .none + } +} + +extension BankPickerViewController: UITableViewDataSource { + + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return filteredPlaces.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableVIew.dequeueReusableCell(withIdentifier: "BankPickerCell", for: indexPath) as! BankPickerCell + cell.place = self.filteredPlaces.elementAt(index: indexPath.row)?.name +// if let selected = self.defaultSelectedData.first { +// cell.selectedPlace = selected +// } + cell.setup() + return cell + } +} diff --git a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift index 0afdb46f..fa39d984 100644 --- a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift +++ b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift @@ -122,11 +122,9 @@ class SendMoneyPaymentModeViewController: UIViewController { private func showBankPickerView() { let viewcontroller = self.getPickerViewController() let banks = self.selectedPayoutMode?.bankList ?? [] - let names = banks.compactMap({$0.name}) - viewcontroller.data = names + viewcontroller.data = banks viewcontroller.type = PickerTitle.bank viewcontroller.doneAction = self.bankSelected - viewcontroller.defaultSelectedData = [self.selectedBank?.name ?? ""] self.present(viewcontroller, animated: true, completion: nil) } @@ -140,18 +138,21 @@ class SendMoneyPaymentModeViewController: UIViewController { self.present(viewcontroller, animated: true, completion: nil) } - func branchSelected(branches: [SendMoneyBankBranch]) { - self.selectedBranch = branches.first + func branchSelected(branches: [SendMoneyBankBranch?]) { + if let data = branches.first { + self.selectedBranch = data + } } - func bankSelected(banks: [String]) { - let _banks = self.selectedPayoutMode?.bankList ?? [] - let _bank = _banks.filter({($0.name ?? "") == (banks.first ?? "") }).first - self.selectedBank = _bank + func bankSelected(banks: [SendMoneyBank?]) { + if let data = banks.first { + self.selectedBank = data + } + } - private func getPickerViewController()-> ItemsPickerViewController { - return UIStoryboard.init(name: "ItemsPicker", bundle: nil).instantiateViewController(withIdentifier: "ItemsPickerViewController") as! ItemsPickerViewController + private func getPickerViewController()-> BankPickerViewController { + return UIStoryboard.init(name: "BankPicker", bundle: nil).instantiateViewController(withIdentifier: "BankPickerViewController") as! BankPickerViewController } private func getBankBranchPickerViewController()-> BankBranchPickerViewController {