|
@@ -14,26 +14,21 @@ class EditExpressAddressView: BaseView {
|
|
|
|
|
|
let placeholderTitles = ["姓名","收件人电话号码","省份、城市、区县","如道路、门牌号、小区、楼栋号等"]
|
|
|
|
|
|
- var expressAddresModel: ExpressAddresModel? {
|
|
|
- didSet {
|
|
|
- tableView.reloadData()
|
|
|
- }
|
|
|
- }
|
|
|
+ typealias ExpressAddressClosure = (_ expressAddresModel: ExpressAddresModel?) -> Void
|
|
|
+ var expressAddressClosure : ExpressAddressClosure?
|
|
|
|
|
|
- var editExpressAddressVCType :EditExpressAddressVCType? {
|
|
|
+ var expressAddresModel: ExpressAddresModel? {
|
|
|
didSet {
|
|
|
- if editExpressAddressVCType == .new {
|
|
|
+ if expressAddresModel == nil {
|
|
|
+ expressAddresModel = ExpressAddresModel()
|
|
|
tableView.tableFooterView = nil
|
|
|
- }else if editExpressAddressVCType == .update {
|
|
|
+ }else {
|
|
|
tableView.tableFooterView = editAddressFooterView
|
|
|
}
|
|
|
tableView.reloadData()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- typealias DidSelectRowClosure = (_ indexPath: IndexPath) -> Void
|
|
|
- var didSelectRowClosure : DidSelectRowClosure?
|
|
|
-
|
|
|
typealias DeleteClosure = () -> Void
|
|
|
var deleteClosure : DeleteClosure?
|
|
|
|
|
@@ -53,8 +48,7 @@ class EditExpressAddressView: BaseView {
|
|
|
tableView.delegate = self
|
|
|
tableView.dataSource = self
|
|
|
tableView.separatorStyle = .none
|
|
|
- tableView.rowHeight = 48
|
|
|
-
|
|
|
+ tableView.estimatedRowHeight = 48
|
|
|
return tableView
|
|
|
}()
|
|
|
private lazy var editAddressFooterView: EditAddressFooterView = {
|
|
@@ -72,7 +66,6 @@ class EditExpressAddressView: BaseView {
|
|
|
|
|
|
extension EditExpressAddressView: UITableViewDelegate,UITableViewDataSource {
|
|
|
|
|
|
-
|
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
|
|
return titles.count
|
|
|
}
|
|
@@ -86,13 +79,65 @@ extension EditExpressAddressView: UITableViewDelegate,UITableViewDataSource {
|
|
|
|
|
|
switch indexPath.section {
|
|
|
case 0:
|
|
|
- let cell = EditAddressTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
|
|
|
- cell.titles = titles[indexPath.section]
|
|
|
- cell.placeholderTitles = placeholderTitles
|
|
|
- if let expressAddresModel = expressAddresModel {
|
|
|
- cell.expressAddresModel = expressAddresModel
|
|
|
+
|
|
|
+ switch indexPath.row {
|
|
|
+ case 3:
|
|
|
+ let cell = EditExpressAddressTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
|
|
|
+ cell.titles = titles[indexPath.section]
|
|
|
+ cell.placeholderTitles = placeholderTitles
|
|
|
+ if let expressAddresModel = expressAddresModel {
|
|
|
+ cell.expressAddresModel = expressAddresModel
|
|
|
+ }
|
|
|
+ cell.editTextViewClosure = {
|
|
|
+ [weak self] (text,indexPath) in
|
|
|
+ switch indexPath.row {
|
|
|
+ case 3:
|
|
|
+ let currentOffset = tableView.contentOffset
|
|
|
+ UIView.setAnimationsEnabled(false)
|
|
|
+ tableView.beginUpdates()
|
|
|
+ tableView.endUpdates()
|
|
|
+ UIView.setAnimationsEnabled(true)
|
|
|
+ tableView.setContentOffset(currentOffset, animated: false)
|
|
|
+ self?.expressAddresModel?.address = text
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if let expressAddressClosure = self?.expressAddressClosure {
|
|
|
+ expressAddressClosure((self?.expressAddresModel)!)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return cell
|
|
|
+ default:
|
|
|
+ let cell = EditAddressTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
|
|
|
+ cell.titles = titles[indexPath.section]
|
|
|
+ cell.placeholderTitles = placeholderTitles
|
|
|
+ if let expressAddresModel = expressAddresModel {
|
|
|
+ cell.expressAddresModel = expressAddresModel
|
|
|
+ }
|
|
|
+ cell.editTextFieldClosure = {
|
|
|
+ [weak self] (text,indexPath) in
|
|
|
+ switch indexPath.row {
|
|
|
+ case 0:
|
|
|
+ self?.expressAddresModel?.contactName = text
|
|
|
+ break
|
|
|
+ case 1:
|
|
|
+ self?.expressAddresModel?.contactMobile = text
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if let expressAddressClosure = self?.expressAddressClosure {
|
|
|
+ expressAddressClosure(self?.expressAddresModel)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if indexPath.row == 2 {
|
|
|
+ cell.placeholderTitles = placeholderTitles
|
|
|
+ cell.expressAddresModel = self.expressAddresModel
|
|
|
+ }
|
|
|
+ return cell
|
|
|
}
|
|
|
- return cell
|
|
|
default:
|
|
|
let cell = EditSetDefaultTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
|
|
|
cell.titles = titles[indexPath.section]
|
|
@@ -102,8 +147,36 @@ extension EditExpressAddressView: UITableViewDelegate,UITableViewDataSource {
|
|
|
}
|
|
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
|
- if let didSelectRowClosure = self.didSelectRowClosure {
|
|
|
- didSelectRowClosure(indexPath)
|
|
|
+
|
|
|
+ switch indexPath.row {
|
|
|
+ case 2:
|
|
|
+ AlertSheetView.sheetProvinceCityAreaView {
|
|
|
+ [weak self] (province, city, area) in
|
|
|
+ self?.expressAddresModel?.provinceId = Int(province.areaCode ?? "")
|
|
|
+ self?.expressAddresModel?.provinceName = province.areaName ?? ""
|
|
|
+ self?.expressAddresModel?.cityId = Int(city.areaCode ?? "")
|
|
|
+ self?.expressAddresModel?.cityName = city.areaName ?? ""
|
|
|
+ self?.expressAddresModel?.areaId = Int(area.areaCode ?? "")
|
|
|
+ self?.expressAddresModel?.areaName = area.areaName ?? ""
|
|
|
+ let indexPath = IndexPath(item: 2, section: 0)
|
|
|
+ tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
|
|
|
+ if let expressAddressClosure = self?.expressAddressClosure {
|
|
|
+ expressAddressClosure(self?.expressAddresModel)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
|
|
+ if indexPath.row == 3 {
|
|
|
+ return UITableView.automaticDimension
|
|
|
+ }else {
|
|
|
+ return 48
|
|
|
}
|
|
|
}
|
|
|
|