old">
+ }
+}
+
+extension GroupViewController: UICollectionViewDelegateFlowLayout {
+ func collectionView(_ collectionView: UICollectionView,
+ layout collectionViewLayout: UICollectionViewLayout,
+ sizeForItemAt indexPath: IndexPath) -> CGSize {
+ return viewModel.layoutSizeForIndexPath(indexPath)
+ }
+}
+
+/// MARK: imagepicker delegate
+extension GroupViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
+
+ @IBAction func takePhotoAction() {
+ let vc = UIImagePickerController()
+ #if (arch(i386) || arch(x86_64))
+ vc.sourceType = .photoLibrary
+ #else
+ vc.sourceType = .camera
+ #endif
+ vc.delegate = self
+ present(vc, animated: true, completion: nil)
+ }
+
+ func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
+ dismiss(animated: true, completion: nil)
+
+ guard let image = info[.originalImage] as? UIImage else { return }
+
+ viewModel.submit(image: image)
+ }
+
+ func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
+ dismiss(animated: true, completion: nil)
+ }
+}
+
+extension GroupViewController: NavigationBackViewController {}
+
+extension GroupViewController: Storyboarded {
+ static func instantiate() -> GroupViewController {
+ let vc = UIStoryboard.group.instantiateController(GroupViewController.self)
+ return vc
+ }
+}
@@ -54,7 +54,7 @@ final class CreateGroupConfirmViewController: AlertViewController { |
||
54 | 54 |
// } |
55 | 55 |
|
56 | 56 |
// func confirmAndJump() { |
57 |
-// let ctl = UIStoryboard.main.instantiateController(GroupPageController.self) |
|
57 |
+// let ctl = UIStoryboard.main.instantiateController(GroupViewController.self) |
|
58 | 58 |
// ctl.groupModel = group |
59 | 59 |
// ctl.isCreate = true |
60 | 60 |
// guard let parentController = presentingViewController as? UINavigationController else { |
@@ -1,140 +0,0 @@ |
||
1 |
-// |
|
2 |
-// GroupPageController.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/3/28. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import RxSwift |
|
11 |
-import RxCocoa |
|
12 |
-import RxDataSources |
|
13 |
-import PaiaiUIKit |
|
14 |
-import PaiaiDataKit |
|
15 |
- |
|
16 |
-final class GroupPageController: UIViewController { |
|
17 |
- |
|
18 |
- // MARK: Storyboard property |
|
19 |
- @IBOutlet var collectionView: UICollectionView! |
|
20 |
- @IBOutlet weak var photographLabel: UILabel! |
|
21 |
- @IBOutlet weak var photographBtn: UIButton! |
|
22 |
- |
|
23 |
- // MARK: custom UI property |
|
24 |
- var maskImageView = UIImageView() |
|
25 |
- var maskLabel = UILabel() |
|
26 |
- |
|
27 |
- // MARK: data property |
|
28 |
- var viewModel: GroupPageViewModel! |
|
29 |
- fileprivate let disposeBag = DisposeBag() |
|
30 |
- |
|
31 |
- // MARK: view function |
|
32 |
- override func viewDidLoad() { |
|
33 |
- super.viewDidLoad() |
|
34 |
- |
|
35 |
- collectionView.register(UINib(nibName: "PhotoCell", bundle: nil), |
|
36 |
- forCellWithReuseIdentifier: "photoCell") |
|
37 |
- |
|
38 |
- configurationRx() |
|
39 |
- |
|
40 |
- addReloadControl() |
|
41 |
- } |
|
42 |
- |
|
43 |
- override func viewWillAppear(_ animated: Bool) { |
|
44 |
- super.viewWillAppear(true) |
|
45 |
- makeNavigationBar() |
|
46 |
- } |
|
47 |
- |
|
48 |
- // MARK: init interface |
|
49 |
- func makeNavigationBar() { |
|
50 |
-// navigationItem.setRightBars(buttonSpace: 0, |
|
51 |
-// images: [UIImage(named: "二维码"), UIImage(named: "更多-右上角-1")], |
|
52 |
-// actions: [#selector(showEWM), #selector(pushToGroupDetailController)], |
|
53 |
-// target: self) |
|
54 |
-// titleWithbackBar = "" |
|
55 |
-// let barView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth - 150, height: 40)) |
|
56 |
-// let label = UILabel() |
|
57 |
-//// label.text = groupModel.group_name |
|
58 |
-// label.textColor = UIColor.white |
|
59 |
-// let labelWidth = min(label.sizeThatFits(CGSize(width: kScreenWidth - 200, height: 40)).width, kScreenWidth - 200) |
|
60 |
-// let imageView = UIImageView(frame: CGRect(x: 0, y: 2, width: 40, height: 40)) |
|
61 |
-// imageView.center = CGPoint(x: barView.center.x - labelWidth / 2, y: barView.center.y) |
|
62 |
-//// imageView.setImageWithNullableURL(groupModel.group_avatar, placeholderImage: UIImage(named: "Group\(groupModel.group_default_avatar)")) |
|
63 |
-// imageView.cornerRadius = 20 |
|
64 |
-// label.frame = CGRect(x: 40 + imageView.x + 5, y: 2, width: kScreenWidth - 200, height: 40) |
|
65 |
-// barView.addSubViews([imageView, label]) |
|
66 |
-// navigationItem.titleView = barView |
|
67 |
- } |
|
68 |
- |
|
69 |
- var dataSource: RxCollectionViewSectionedAnimatedDataSource<AnimatableSectionModel<Int, PhotoItem>> { |
|
70 |
- return RxCollectionViewSectionedAnimatedDataSource<AnimatableSectionModel<Int, PhotoItem>>(configureCell: { (dataSource, collectionView, indexPath, item) -> UICollectionViewCell in |
|
71 |
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath) as! PhotoCell |
|
72 |
- cell.setInfo(item, source: .group) |
|
73 |
- return cell |
|
74 |
- }) |
|
75 |
- } |
|
76 |
- |
|
77 |
- func configurationRx() { |
|
78 |
- |
|
79 |
- collectionView.rx.setDelegate(self).disposed(by: disposeBag) |
|
80 |
- |
|
81 |
-// viewModel.isReload.subscribe(onNext: { |
|
82 |
-// [weak self] _ in |
|
83 |
-// guard let `self` = self else { return } |
|
84 |
-// self.collectionView.es.stopPullToRefresh() |
|
85 |
-// }).disposed(by: disposeBag) |
|
86 |
- |
|
87 |
- viewModel.groupPhotoContents |
|
88 |
- .bind(to: collectionView.rx.items(dataSource: dataSource)) |
|
89 |
- .disposed(by: disposeBag) |
|
90 |
- |
|
91 |
- collectionView.rx.modelSelected(PhotoItem.self) |
|
92 |
- .subscribe(onNext: { [unowned self] in self.viewModel.didSelect($0) }) |
|
93 |
- .disposed(by: disposeBag) |
|
94 |
- |
|
95 |
- collectionView.collectionViewLayout = WaterfallFlowLayout() |
|
96 |
- } |
|
97 |
- |
|
98 |
- func addReloadControl() { |
|
99 |
-// collectionView.es.addPullToRefresh { |
|
100 |
-// [unowned self] in |
|
101 |
-// self.viewModel.reload() |
|
102 |
-// } |
|
103 |
-// collectionView.es.startPullToRefresh() |
|
104 |
- } |
|
105 |
-} |
|
106 |
- |
|
107 |
-extension GroupPageController: UICollectionViewDelegateFlowLayout { |
|
108 |
- |
|
109 |
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
|
110 |
- return viewModel.layoutSizeForIndexPath(indexPath) |
|
111 |
- } |
|
112 |
-} |
|
113 |
- |
|
114 |
-// MARK: imagepicker delegate |
|
115 |
-extension GroupPageController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { |
|
116 |
- |
|
117 |
- @IBAction func takePhotoAction() { |
|
118 |
- let vc = UIImagePickerController() |
|
119 |
- #if (arch(i386) || arch(x86_64)) |
|
120 |
- vc.sourceType = .photoLibrary |
|
121 |
- #else |
|
122 |
- vc.sourceType = .camera |
|
123 |
- #endif |
|
124 |
- vc.delegate = self |
|
125 |
- present(vc, animated: true, completion: nil) |
|
126 |
- } |
|
127 |
- |
|
128 |
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { |
|
129 |
- dismiss(animated: true, completion: nil) |
|
130 |
- |
|
131 |
- guard let image = info[.originalImage] as? UIImage else { return } |
|
132 |
- |
|
133 |
- viewModel.submit(image: image) |
|
134 |
- } |
|
135 |
- |
|
136 |
- func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { |
|
137 |
- dismiss(animated: true, completion: nil) |
|
138 |
- } |
|
139 |
- |
|
140 |
-} |
@@ -21,7 +21,6 @@ final class HomeViewController: UIViewController { |
||
21 | 21 |
@IBOutlet weak var collectionView: UICollectionView! |
22 | 22 |
// MARK: data property |
23 | 23 |
fileprivate let disposeBag = DisposeBag() |
24 |
- fileprivate let refresher = PullToRefresh() |
|
25 | 24 |
|
26 | 25 |
internal var viewModel: HomeViewModel! |
27 | 26 |
internal var userInfoViewModel: UserInfoViewModel! |
@@ -158,80 +158,6 @@ |
||
158 | 158 |
</objects> |
159 | 159 |
<point key="canvasLocation" x="1705" y="-152"/> |
160 | 160 |
</scene> |
161 |
- <!--GroupPageController--> |
|
162 |
- <scene sceneID="ntn-JA-tbk"> |
|
163 |
- <objects> |
|
164 |
- <viewController storyboardIdentifier="GroupPageController" automaticallyAdjustsScrollViewInsets="NO" id="R29-hC-gNv" userLabel="GroupPageController" customClass="GroupPageController" customModule="PaiAi" sceneMemberID="viewController"> |
|
165 |
- <view key="view" contentMode="scaleToFill" id="ljL-8h-aZ0"> |
|
166 |
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
|
167 |
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
|
168 |
- <subviews> |
|
169 |
- <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="lAJ-ZU-GPi"> |
|
170 |
- <rect key="frame" x="6" y="25" width="363" height="642"/> |
|
171 |
- <color key="backgroundColor" red="0.8784313725490196" green="0.8784313725490196" blue="0.8784313725490196" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|
172 |
- <collectionViewLayout key="collectionViewLayout" id="D17-J3-rSa" customClass="WaterfallFlowLayout" customModule="Paiai_iOS" customModuleProvider="target"/> |
|
173 |
- <cells/> |
|
174 |
- <connections> |
|
175 |
- <outlet property="delegate" destination="R29-hC-gNv" id="XgJ-WA-ub2"/> |
|
176 |
- </connections> |
|
177 |
- </collectionView> |
|
178 |
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lOt-ls-oe7"> |
|
179 |
- <rect key="frame" x="199" y="493" width="168" height="168"/> |
|
180 |
- <state key="normal" image="BTN-拍照"/> |
|
181 |
- <state key="selected" image="BTN-拍照-press"/> |
|
182 |
- <connections> |
|
183 |
- <action selector="takePhotoAction" destination="R29-hC-gNv" eventType="touchUpInside" id="YIr-6E-LS2"/> |
|
184 |
- </connections> |
|
185 |
- </button> |
|
186 |
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6Ai-Cd-a0J"> |
|
187 |
- <rect key="frame" x="199" y="525" width="168" height="168"/> |
|
188 |
- <state key="normal" image="BTN-扫码"/> |
|
189 |
- <state key="selected" image="BTN-扫码-press"/> |
|
190 |
- </button> |
|
191 |
- <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点我,拍摄照片" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zdv-Nb-P68"> |
|
192 |
- <rect key="frame" x="72.5" y="567" width="121.5" height="20.5"/> |
|
193 |
- <fontDescription key="fontDescription" type="system" pointSize="17"/> |
|
194 |
- <color key="textColor" red="0.1960784314" green="0.1960784314" blue="0.1960784314" alpha="1" colorSpace="calibratedRGB"/> |
|
195 |
- <nil key="highlightedColor"/> |
|
196 |
- </label> |
|
197 |
- <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="88M-NH-Qgh" customClass="FFProgress" customModule="Paiai_iOS" customModuleProvider="target"> |
|
198 |
- <rect key="frame" x="162.5" y="308.5" width="50" height="50"/> |
|
199 |
- <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/> |
|
200 |
- <constraints> |
|
201 |
- <constraint firstAttribute="height" constant="50" id="6A3-02-EsP"/> |
|
202 |
- <constraint firstAttribute="width" constant="50" id="g6l-6C-4jG"/> |
|
203 |
- </constraints> |
|
204 |
- </view> |
|
205 |
- </subviews> |
|
206 |
- <color key="backgroundColor" red="0.8784313725490196" green="0.8784313725490196" blue="0.8784313725490196" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|
207 |
- <constraints> |
|
208 |
- <constraint firstItem="efW-A4-fyT" firstAttribute="bottom" secondItem="lAJ-ZU-GPi" secondAttribute="bottom" id="23G-aq-F9a"/> |
|
209 |
- <constraint firstItem="efW-A4-fyT" firstAttribute="bottom" secondItem="lOt-ls-oe7" secondAttribute="bottom" constant="6" id="2ff-CO-xJk"/> |
|
210 |
- <constraint firstItem="lOt-ls-oe7" firstAttribute="leading" secondItem="zdv-Nb-P68" secondAttribute="trailing" constant="5" id="3cy-f1-xck"/> |
|
211 |
- <constraint firstItem="6Ai-Cd-a0J" firstAttribute="centerX" secondItem="lOt-ls-oe7" secondAttribute="centerX" id="9rZ-z1-OKI"/> |
|
212 |
- <constraint firstItem="lOt-ls-oe7" firstAttribute="top" secondItem="6Ai-Cd-a0J" secondAttribute="bottom" constant="-200" id="Chs-ne-dS2"/> |
|
213 |
- <constraint firstItem="88M-NH-Qgh" firstAttribute="centerX" secondItem="efW-A4-fyT" secondAttribute="centerX" id="IRY-CY-KnW"/> |
|
214 |
- <constraint firstItem="efW-A4-fyT" firstAttribute="trailing" secondItem="lOt-ls-oe7" secondAttribute="trailing" constant="8" id="IUI-dd-MNf"/> |
|
215 |
- <constraint firstItem="lAJ-ZU-GPi" firstAttribute="leading" secondItem="efW-A4-fyT" secondAttribute="leading" constant="6" id="TN2-dq-Bfm"/> |
|
216 |
- <constraint firstItem="zdv-Nb-P68" firstAttribute="centerY" secondItem="lOt-ls-oe7" secondAttribute="centerY" id="Tkh-kV-puR"/> |
|
217 |
- <constraint firstItem="efW-A4-fyT" firstAttribute="trailing" secondItem="lAJ-ZU-GPi" secondAttribute="trailing" constant="6" id="j5S-4o-gNP"/> |
|
218 |
- <constraint firstItem="88M-NH-Qgh" firstAttribute="centerY" secondItem="ljL-8h-aZ0" secondAttribute="centerY" id="qMc-hm-LSD"/> |
|
219 |
- <constraint firstItem="lAJ-ZU-GPi" firstAttribute="top" secondItem="efW-A4-fyT" secondAttribute="top" constant="5" id="tdF-Kt-yAO"/> |
|
220 |
- </constraints> |
|
221 |
- <viewLayoutGuide key="safeArea" id="efW-A4-fyT"/> |
|
222 |
- </view> |
|
223 |
- <navigationItem key="navigationItem" id="aeg-ac-MGk"/> |
|
224 |
- <connections> |
|
225 |
- <outlet property="collectionView" destination="lAJ-ZU-GPi" id="MGB-rX-4dB"/> |
|
226 |
- <outlet property="photographBtn" destination="lOt-ls-oe7" id="ynl-na-505"/> |
|
227 |
- <outlet property="photographLabel" destination="zdv-Nb-P68" id="NJO-Ae-y4X"/> |
|
228 |
- <outlet property="progressView" destination="88M-NH-Qgh" id="2bw-7m-FfB"/> |
|
229 |
- </connections> |
|
230 |
- </viewController> |
|
231 |
- <placeholder placeholderIdentifier="IBFirstResponder" id="Wws-ea-mVh" sceneMemberID="firstResponder"/> |
|
232 |
- </objects> |
|
233 |
- <point key="canvasLocation" x="700" y="57.121439280359823"/> |
|
234 |
- </scene> |
|
235 | 161 |
<!--CreateGroupViewController--> |
236 | 162 |
<scene sceneID="AAe-LB-J2k"> |
237 | 163 |
<objects> |
@@ -556,8 +482,6 @@ |
||
556 | 482 |
<resources> |
557 | 483 |
<image name="BTN-扫码" width="168" height="168"/> |
558 | 484 |
<image name="BTN-扫码-press" width="168" height="168"/> |
559 |
- <image name="BTN-拍照" width="168" height="168"/> |
|
560 |
- <image name="BTN-拍照-press" width="168" height="168"/> |
|
561 | 485 |
<image name="BTN-新增" width="168" height="168"/> |
562 | 486 |
<image name="BTN-新增-press" width="168" height="168"/> |
563 | 487 |
<image name="guide1" width="1462" height="2600"/> |
@@ -63,7 +63,7 @@ extension ScanQRViewController: QRCodeScanViewDelegate { |
||
63 | 63 |
|
64 | 64 |
// let request = GroupNetworkRequest(path: .joinTourGroup, parameter: params) |
65 | 65 |
// NetworkApi.share.post(request: request, handler: { (res) in |
66 |
-// let ctl = UIStoryboard.main.instantiateController(GroupPageController.self) |
|
66 |
+// let ctl = UIStoryboard.main.instantiateController(GroupViewController.self) |
|
67 | 67 |
// ctl.isCreate = true |
68 | 68 |
// ctl.isScan = true |
69 | 69 |
// ctl.groupModel = res[0] |
@@ -101,7 +101,7 @@ extension ScanQRViewController: QRCodeScanViewDelegate { |
||
101 | 101 |
|
102 | 102 |
// let request = GroupNetworkRequest(path: path, parameter: params) |
103 | 103 |
// NetworkApi.share.post(request: request, handler: { (res) in |
104 |
-// let ctl = UIStoryboard.main.instantiateController(GroupPageController.self) |
|
104 |
+// let ctl = UIStoryboard.main.instantiateController(GroupViewController.self) |
|
105 | 105 |
// ctl.isCreate = true |
106 | 106 |
// ctl.isScan = true |
107 | 107 |
// ctl.groupModel = res[0] |
@@ -11,10 +11,14 @@ import PaiaiDataKit |
||
11 | 11 |
|
12 | 12 |
class MessageCoordinator: Coordinator { |
13 | 13 |
let messageViewController: MessageViewController |
14 |
+ let navigationController: UINavigationController |
|
14 | 15 |
var shareUserInfoViewModel: UserInfoViewModel |
15 | 16 |
|
16 |
- init(_ messageVC: MessageViewController, userInfoViewModel: UserInfoViewModel) { |
|
17 |
+ init(_ messageVC: MessageViewController, |
|
18 |
+ navigationController: UINavigationController, |
|
19 |
+ userInfoViewModel: UserInfoViewModel) { |
|
17 | 20 |
messageViewController = messageVC |
21 |
+ self.navigationController = navigationController |
|
18 | 22 |
shareUserInfoViewModel = userInfoViewModel |
19 | 23 |
messageViewController.viewModel.delegate = self |
20 | 24 |
} |
@@ -33,7 +37,7 @@ extension MessageCoordinator { |
||
33 | 37 |
extension MessageCoordinator: MessageViewModelDelegate { |
34 | 38 |
func didSelect(type: MessageType) { |
35 | 39 |
let messageListVC = makeMessageListViewContorller(type: type) |
36 |
- messageViewController.pushViewController(messageListVC) |
|
40 |
+ navigationController.pushViewController(messageListVC) |
|
37 | 41 |
} |
38 | 42 |
} |
39 | 43 |
|
@@ -46,7 +46,7 @@ fileprivate extension MineAboutViewController { |
||
46 | 46 |
.subscribe { (_) in |
47 | 47 |
let webVC = WebViewController(title: "联系我们", |
48 | 48 |
path: "https://pai.ai/page/contact_us") |
49 |
- self.pushViewController(webVC) |
|
49 |
+ self.navigationController?.pushViewController(webVC) |
|
50 | 50 |
}.disposed(by: disposeBag) |
51 | 51 |
} |
52 | 52 |
|
@@ -67,7 +67,7 @@ fileprivate extension MineAboutViewController { |
||
67 | 67 |
.subscribe { (_) in |
68 | 68 |
let webVC = WebViewController(title: "用户协议", |
69 | 69 |
path: "https://pai.ai/page/user_agreement") |
70 |
- self.pushViewController(webVC) |
|
70 |
+ self.navigationController?.pushViewController(webVC) |
|
71 | 71 |
}.disposed(by: disposeBag) |
72 | 72 |
} |
73 | 73 |
} |
@@ -14,9 +14,10 @@ class MineCoordinator: Coordinator { |
||
14 | 14 |
|
15 | 15 |
let mineViewController: MineViewController |
16 | 16 |
let navigationController: UINavigationController |
17 |
+ var childCoordinator = [String: Coordinator]() |
|
17 | 18 |
// let shareUserInfoViewModel |
18 | 19 |
|
19 |
- init(_ mineViewController: MineViewController, containerViewController: UINavigationController) { |
|
20 |
+ init(_ mineViewController: MineViewController, navigationController: UINavigationController) { |
|
20 | 21 |
self.mineViewController = mineViewController |
21 | 22 |
self.navigationController = navigationController |
22 | 23 |
self.mineViewController.delegate = self |
@@ -30,7 +31,7 @@ class MineCoordinator: Coordinator { |
||
30 | 31 |
extension MineCoordinator: MineViewControllerDelegate { |
31 | 32 |
func logout() { |
32 | 33 |
let vc = makeLoginViewController() |
33 |
- containerViewController.presentController(vc) |
|
34 |
+ navigationController.presentController(vc) |
|
34 | 35 |
} |
35 | 36 |
|
36 | 37 |
func didSelect(_ item: MineItem) { |
@@ -39,17 +40,17 @@ extension MineCoordinator: MineViewControllerDelegate { |
||
39 | 40 |
switch item { |
40 | 41 |
case .group: |
41 | 42 |
let vc = makeMineGroupViewController() |
42 |
- navigationController |
|
43 |
- containerViewController.pushViewController(vc) |
|
43 |
+ vc.viewModel.delegate = self |
|
44 |
+ navigationController.pushViewController(vc) |
|
44 | 45 |
case .order: |
45 | 46 |
let vc = makeMineOrderViewController() |
46 |
- containerViewController.pushViewController(vc) |
|
47 |
+ navigationController.pushViewController(vc) |
|
47 | 48 |
case .feedback: |
48 | 49 |
let vc = makeMineFeedbackViewController() |
49 |
- containerViewController.pushViewController(vc) |
|
50 |
+ navigationController.pushViewController(vc) |
|
50 | 51 |
case .about: |
51 | 52 |
let vc = makeMineAboutViewController() |
52 |
- containerViewController.pushViewController(vc) |
|
53 |
+ navigationController.pushViewController(vc) |
|
53 | 54 |
} |
54 | 55 |
} |
55 | 56 |
|
@@ -57,6 +58,16 @@ extension MineCoordinator: MineViewControllerDelegate { |
||
57 | 58 |
} |
58 | 59 |
} |
59 | 60 |
|
61 |
+extension MineCoordinator: MineGroupViewModelDelegate { |
|
62 |
+ func didSelect(_ item: GroupItem) { |
|
63 |
+ let vc = makeGroupViewController(item: item) |
|
64 |
+ let coordinator = GroupCoordinator(navigationController: navigationController) |
|
65 |
+ childCoordinator["group"] = coordinator |
|
66 |
+ |
|
67 |
+ navigationController.pushViewController(vc) |
|
68 |
+ } |
|
69 |
+} |
|
70 |
+ |
|
60 | 71 |
fileprivate extension MineCoordinator { |
61 | 72 |
func makeLoginViewController() -> LoginViewController { |
62 | 73 |
let vc = UIStoryboard.main.instantiateController(LoginViewController.self) |
@@ -86,6 +97,13 @@ fileprivate extension MineCoordinator { |
||
86 | 97 |
let vc = UIStoryboard.mine.instantiateController(MineAboutViewController.self) |
87 | 98 |
return vc |
88 | 99 |
} |
100 |
+ |
|
101 |
+ func makeGroupViewController(item: GroupItem) -> GroupViewController { |
|
102 |
+ let vc = GroupViewController.instantiate() |
|
103 |
+ vc.viewModel = GroupViewModel(groupItem: item) |
|
104 |
+ vc.groupItem = item |
|
105 |
+ return vc |
|
106 |
+ } |
|
89 | 107 |
} |
90 | 108 |
|
91 | 109 |
extension UIStoryboard { |
@@ -32,7 +32,7 @@ final class MineFeedbackViewController: UIViewController { |
||
32 | 32 |
@IBAction func sendFeedBack() { |
33 | 33 |
feedbackAPI.submit(text: textView.text).subscribe(onCompleted: {[weak self] in |
34 | 34 |
guard let `self` = self else { return } |
35 |
- self.popController() |
|
35 |
+ self.navigationController?.popViewController(animated: true) |
|
36 | 36 |
Toast.show(message: "感谢您的建议") |
37 | 37 |
}) { (error) in |
38 | 38 |
|
@@ -65,7 +65,7 @@ final class DetailPageController: UIViewController { |
||
65 | 65 |
//// last.mainViewModel.models.value = datas |
66 | 66 |
// } |
67 | 67 |
// |
68 |
-// if let last = navigationController?.viewControllers[(navigationController?.viewControllers.count)! - 1] as? GroupPageController { |
|
68 |
+// if let last = navigationController?.viewControllers[(navigationController?.viewControllers.count)! - 1] as? GroupViewController { |
|
69 | 69 |
//// last.MineGroupViewModel.models.value = datas |
70 | 70 |
// } |
71 | 71 |
// } |
@@ -287,7 +287,7 @@ extension DetailPageController: CellDelegate { |
||
287 | 287 |
} |
288 | 288 |
|
289 | 289 |
func pushNext() { |
290 |
- let ctl = UIStoryboard.main.instantiateController(GroupPageController.self) |
|
290 |
+ let ctl = UIStoryboard.main.instantiateController(GroupViewController.self) |
|
291 | 291 |
|
292 | 292 |
// ctl.groupModel = GroupModel(map: Map(mappingType: .fromJSON, JSON: datas[currentPhotoIndex].toJSON())) |
293 | 293 |
show(ctl, sender: nil) |