杨锴
2024-09-14 6912d657ec6bb1db9683d5b5be8f0777f001ba11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//
//  PavilionVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/12.
//
 
import UIKit
import JQTools
import RxSwift
import RxRelay
import CoreLocation
 
class PavilionViewModel:RefreshInnerModel<PavilionDetailModel>{
                var location = BehaviorRelay<CLLocationCoordinate2D?>(value: nil)
                var search = BehaviorRelay<String?>(value: nil)
 
                override func api() -> (Observable<BaseResponse<BaseResponseList<PavilionDetailModel>>>)? {
                                return Services.getPavlilonPage(location: location.value, search: search.value, page: page)
                }
}
 
class PavilionVC: BaseVC {
                @IBOutlet weak var collectionView: UICollectionView!
 
                private var viewModel = PavilionViewModel()
                private var locationTool = JQ_LocationTool.instance()
 
                override func viewDidLoad() {
                                super.viewDidLoad()
 
                                viewModel.configure(collectionView)
                                viewModel.beginRefresh()
 
                                locationTool.startLocation { location in
                                                self.viewModel.location.accept(location.coordinate)
                                                self.viewModel.beginRefresh()
                                } errorClouse: { error in
                                }
                }
 
                override func setUI() {
                                super.setUI()
                                view.backgroundColor = UIColor(hexString: "#f6f6f6")
                                collectionView.delegate = self
                                collectionView.dataSource = self
                                collectionView.backgroundColor = .clear
                                collectionView.showsVerticalScrollIndicator = false
                                collectionView.backgroundColor = .clear
                                collectionView.contentInset = UIEdgeInsets(top: 0, left: 28.5, bottom: 0, right: 28.5)
                                collectionView.register(UINib(nibName: "PavilionItemCell", bundle: nil), forCellWithReuseIdentifier: "_PavilionItemCell")
                }
 
 
                @IBAction func searchAction(_ sender: Any) {
                                let searchVC = PavilionSearchVC()
                                searchVC.viewModel = viewModel
                                push(vc: searchVC)
                }
 
}
 
extension PavilionVC:UICollectionViewDelegate{
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                let detailVC = PavilionDetailVC(id: model.id)
                                push(vc: detailVC)
                }
}
 
extension PavilionVC:UICollectionViewDataSource{
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_PavilionItemCell", for: indexPath) as! PavilionItemCell
                                cell.backgroundColor = .white
                                cell.jq_cornerRadius = 16
                                cell.setPavilionDetailModel(model)
                                return cell
                }
 
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                return viewModel.dataSource.value?.list.count ?? 0
                }
}
 
extension PavilionVC:UICollectionViewDelegateFlowLayout{
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
                                return 25.5
                }
 
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
                                return 19
                }
 
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
                                let w = (JQ_ScreenW - 28.5 * 2 - 19) / 2.0
                                let h = w * 1.2681
                                return CGSizeMake(w, h)
                }
}
 
//extension PavilionVC:UITextFieldDelegate{
//                func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//                                textField.endEditing(true)
//
//                                return true
//                }
//}