+				FRAMEWORK_SEARCH_PATHS = (
1890
+					"$(inherited)",
1891
+					"$(PROJECT_DIR)/Carthage/Build/iOS",
1892
+				);
1915 1893
 				GCC_C_LANGUAGE_STANDARD = gnu11;
1916 1894
 				INFOPLIST_FILE = PaiaiUIKit/Info.plist;
1917 1895
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -1952,7 +1930,12 @@
1952 1930
 				DYLIB_COMPATIBILITY_VERSION = 1;
1953 1931
 				DYLIB_CURRENT_VERSION = 1;
1954 1932
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
1933
+				FRAMEWORK_SEARCH_PATHS = (
1934
+					"$(inherited)",
1935
+					"$(PROJECT_DIR)/Carthage/Build/iOS",
1936
+				);
1955 1937
 				GCC_C_LANGUAGE_STANDARD = gnu11;
1938
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
1956 1939
 				INFOPLIST_FILE = PaiaiUIKit/Info.plist;
1957 1940
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
1958 1941
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@@ -1967,6 +1950,7 @@
1967 1950
 				SKIP_INSTALL = YES;
1968 1951
 				SWIFT_VERSION = 5.0;
1969 1952
 				TARGETED_DEVICE_FAMILY = 1;
1953
+				VALID_ARCHS = "arm64 arm64e armv7s";
1970 1954
 				VERSIONING_SYSTEM = "apple-generic";
1971 1955
 				VERSION_INFO_PREFIX = "";
1972 1956
 			};
@@ -1994,12 +1978,14 @@
1994 1978
 				FRAMEWORK_SEARCH_PATHS = (
1995 1979
 					"$(inherited)",
1996 1980
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
1981
+					"$(PROJECT_DIR)",
1997 1982
 				);
1998 1983
 				GCC_C_LANGUAGE_STANDARD = gnu11;
1999 1984
 				HEADER_SEARCH_PATHS = "";
2000 1985
 				INFOPLIST_FILE = PaiaiDataKit/Info.plist;
2001 1986
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2002 1987
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
1988
+				LD_GENERATE_MAP_FILE = YES;
2003 1989
 				LD_RUNPATH_SEARCH_PATHS = (
2004 1990
 					"$(inherited)",
2005 1991
 					"@executable_path/Frameworks",
@@ -2047,12 +2033,15 @@
2047 2033
 				FRAMEWORK_SEARCH_PATHS = (
2048 2034
 					"$(inherited)",
2049 2035
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
2036
+					"$(PROJECT_DIR)",
2050 2037
 				);
2051 2038
 				GCC_C_LANGUAGE_STANDARD = gnu11;
2039
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
2052 2040
 				HEADER_SEARCH_PATHS = "";
2053 2041
 				INFOPLIST_FILE = PaiaiDataKit/Info.plist;
2054 2042
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2055 2043
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2044
+				LD_GENERATE_MAP_FILE = YES;
2056 2045
 				LD_RUNPATH_SEARCH_PATHS = (
2057 2046
 					"$(inherited)",
2058 2047
 					"@executable_path/Frameworks",
@@ -2069,6 +2058,7 @@
2069 2058
 				SWIFT_OBJC_BRIDGING_HEADER = "";
2070 2059
 				SWIFT_VERSION = 5.0;
2071 2060
 				TARGETED_DEVICE_FAMILY = "1,2";
2061
+				VALID_ARCHS = "arm64 arm64e armv7s";
2072 2062
 				VERSIONING_SYSTEM = "apple-generic";
2073 2063
 				VERSION_INFO_PREFIX = "";
2074 2064
 			};
@@ -2094,6 +2084,7 @@
2094 2084
 				FRAMEWORK_SEARCH_PATHS = (
2095 2085
 					"$(inherited)",
2096 2086
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
2087
+					"$(PROJECT_DIR)",
2097 2088
 				);
2098 2089
 				GCC_C_LANGUAGE_STANDARD = gnu11;
2099 2090
 				INFOPLIST_FILE = Paiai_iOS/Info.plist;
@@ -2112,6 +2103,7 @@
2112 2103
 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
2113 2104
 				SWIFT_VERSION = 5.0;
2114 2105
 				TARGETED_DEVICE_FAMILY = 1;
2106
+				VALID_ARCHS = "arm64 arm64e armv7s";
2115 2107
 				VERSIONING_SYSTEM = "apple-generic";
2116 2108
 				VERSION_INFO_PREFIX = "";
2117 2109
 			};
@@ -2138,8 +2130,10 @@
2138 2130
 				FRAMEWORK_SEARCH_PATHS = (
2139 2131
 					"$(inherited)",
2140 2132
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
2133
+					"$(PROJECT_DIR)",
2141 2134
 				);
2142 2135
 				GCC_C_LANGUAGE_STANDARD = gnu11;
2136
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
2143 2137
 				INFOPLIST_FILE = Paiai_iOS/Info.plist;
2144 2138
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2145 2139
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@@ -2154,6 +2148,7 @@
2154 2148
 				SKIP_INSTALL = YES;
2155 2149
 				SWIFT_VERSION = 5.0;
2156 2150
 				TARGETED_DEVICE_FAMILY = 1;
2151
+				VALID_ARCHS = "arm64 arm64e armv7s";
2157 2152
 				VERSIONING_SYSTEM = "apple-generic";
2158 2153
 				VERSION_INFO_PREFIX = "";
2159 2154
 			};
@@ -2209,6 +2204,7 @@
2209 2204
 				GCC_WARN_UNUSED_FUNCTION = YES;
2210 2205
 				GCC_WARN_UNUSED_VARIABLE = YES;
2211 2206
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2207
+				LD_GENERATE_MAP_FILE = YES;
2212 2208
 				MTL_ENABLE_DEBUG_INFO = YES;
2213 2209
 				ONLY_ACTIVE_ARCH = YES;
2214 2210
 				OTHER_LDFLAGS = (
@@ -2264,6 +2260,7 @@
2264 2260
 				GCC_WARN_UNUSED_FUNCTION = YES;
2265 2261
 				GCC_WARN_UNUSED_VARIABLE = YES;
2266 2262
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2263
+				LD_GENERATE_MAP_FILE = YES;
2267 2264
 				MTL_ENABLE_DEBUG_INFO = NO;
2268 2265
 				OTHER_LDFLAGS = (
2269 2266
 					"-Objc",
@@ -2284,17 +2281,17 @@
2284 2281
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
2285 2282
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
2286 2283
 				CLANG_ENABLE_MODULES = NO;
2287
-				CODE_SIGN_ENTITLEMENTS = PaiAi/PaiAi.entitlements;
2288 2284
 				CODE_SIGN_IDENTITY = "iPhone Developer";
2289 2285
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
2290 2286
 				CODE_SIGN_STYLE = Automatic;
2291 2287
 				DEFINES_MODULE = YES;
2292
-				DEVELOPMENT_TEAM = RSJ4N8U2LM;
2288
+				DEVELOPMENT_TEAM = Q38447SL4M;
2293 2289
 				ENABLE_BITCODE = NO;
2294 2290
 				FRAMEWORK_SEARCH_PATHS = (
2295 2291
 					"$(inherited)",
2296 2292
 					"$(PROJECT_DIR)/Paiai",
2297 2293
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
2294
+					"$(PROJECT_DIR)",
2298 2295
 				);
2299 2296
 				GCC_PREFIX_HEADER = "";
2300 2297
 				GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
@@ -2305,6 +2302,7 @@
2305 2302
 				);
2306 2303
 				INFOPLIST_FILE = PaiAi/Info.plist;
2307 2304
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2305
+				LD_GENERATE_MAP_FILE = YES;
2308 2306
 				LD_RUNPATH_SEARCH_PATHS = (
2309 2307
 					"$(inherited)",
2310 2308
 					"@executable_path/Frameworks",
@@ -2315,6 +2313,7 @@
2315 2313
 				);
2316 2314
 				MACH_O_TYPE = mh_execute;
2317 2315
 				ONLY_ACTIVE_ARCH = YES;
2316
+				OTHER_CODE_SIGN_FLAGS = "--deep";
2318 2317
 				OTHER_LDFLAGS = "-all_load";
2319 2318
 				OTHER_SWIFT_FLAGS = "-DDEBUG";
2320 2319
 				PRODUCT_BUNDLE_IDENTIFIER = com.PaiAi.PaiAi;
@@ -2335,18 +2334,19 @@
2335 2334
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
2336 2335
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
2337 2336
 				CLANG_ENABLE_MODULES = NO;
2338
-				CODE_SIGN_ENTITLEMENTS = PaiAi/PaiAi.entitlements;
2339 2337
 				CODE_SIGN_IDENTITY = "iPhone Developer";
2340 2338
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
2341 2339
 				CODE_SIGN_STYLE = Automatic;
2342 2340
 				DEBUG_INFORMATION_FORMAT = dwarf;
2343 2341
 				DEFINES_MODULE = YES;
2344
-				DEVELOPMENT_TEAM = RSJ4N8U2LM;
2342
+				DEVELOPMENT_TEAM = Q38447SL4M;
2345 2343
 				FRAMEWORK_SEARCH_PATHS = (
2346 2344
 					"$(inherited)",
2347 2345
 					"$(PROJECT_DIR)/Paiai",
2348 2346
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
2347
+					"$(PROJECT_DIR)",
2349 2348
 				);
2349
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
2350 2350
 				GCC_PREFIX_HEADER = "";
2351 2351
 				HEADER_SEARCH_PATHS = (
2352 2352
 					"$(PROJECT_DIR)/Paiai/wxSDK/WXApi.h",
@@ -2355,6 +2355,7 @@
2355 2355
 				);
2356 2356
 				INFOPLIST_FILE = PaiAi/Info.plist;
2357 2357
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2358
+				LD_GENERATE_MAP_FILE = YES;
2358 2359
 				LD_RUNPATH_SEARCH_PATHS = (
2359 2360
 					"$(inherited)",
2360 2361
 					"@executable_path/Frameworks",
@@ -2365,6 +2366,7 @@
2365 2366
 				);
2366 2367
 				MACH_O_TYPE = mh_execute;
2367 2368
 				ONLY_ACTIVE_ARCH = YES;
2369
+				OTHER_CODE_SIGN_FLAGS = "--deep";
2368 2370
 				OTHER_LDFLAGS = "-all_load";
2369 2371
 				OTHER_SWIFT_FLAGS = "";
2370 2372
 				PRODUCT_BUNDLE_IDENTIFIER = com.PaiAi.PaiAi;
@@ -2374,6 +2376,7 @@
2374 2376
 				SWIFT_OBJC_BRIDGING_HEADER = "Swift-bridge.h";
2375 2377
 				SWIFT_VERSION = 5.0;
2376 2378
 				USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/**";
2379
+				VALID_ARCHS = "arm64 arm64e armv7s";
2377 2380
 			};
2378 2381
 			name = Release;
2379 2382
 		};

二进制
PaiAi/Paiai.xcodeproj/project.xcworkspace/xcuserdata/FFIB.xcuserdatad/UserInterfaceState.xcuserstate


+ 0 - 12
PaiAi/Paiai.xcodeproj/xcuserdata/FFIB.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -2,16 +2,4 @@
2 2
 <Bucket
3 3
    type = "1"
4 4
    version = "2.0">
5
-   <Breakpoints>
6
-      <BreakpointProxy
7
-         BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
8
-         <BreakpointContent
9
-            shouldBeEnabled = "Yes"
10
-            ignoreCount = "0"
11
-            continueAfterRunningActions = "No"
12
-            scope = "0"
13
-            stopOnStyle = "0">
14
-         </BreakpointContent>
15
-      </BreakpointProxy>
16
-   </Breakpoints>
17 5
 </Bucket>

+ 2 - 2
PaiAi/Paiai.xcodeproj/xcuserdata/FFIB.xcuserdatad/xcschemes/PaiAi.xcscheme

@@ -104,10 +104,10 @@
104 104
       </BuildableProductRunnable>
105 105
    </ProfileAction>
106 106
    <AnalyzeAction
107
-      buildConfiguration = "Debug">
107
+      buildConfiguration = "Release">
108 108
    </AnalyzeAction>
109 109
    <ArchiveAction
110
-      buildConfiguration = "Debug"
110
+      buildConfiguration = "Release"
111 111
       revealArchiveInOrganizer = "YES">
112 112
    </ArchiveAction>
113 113
 </Scheme>

二进制
PaiAi/Paiai/Assets.xcassets/.DS_Store


二进制
PaiAi/Paiai/Assets.xcassets/module/login/guide1.imageset/8778FB9773576108C6D5109F23D69C69.png


二进制
PaiAi/Paiai/Assets.xcassets/module/login/guide2.imageset/A4494A157AB20FA47B8B96993319B3E9.png


二进制
PaiAi/Paiai/Assets.xcassets/module/login/guide3.imageset/862B9012863929D278CBEF1E3A118E6D.png


+ 1 - 1
PaiAi/Paiai/Info.plist

@@ -62,7 +62,7 @@
62 62
 		</dict>
63 63
 	</array>
64 64
 	<key>CFBundleVersion</key>
65
-	<string>1</string>
65
+	<string>3</string>
66 66
 	<key>LSApplicationCategoryType</key>
67 67
 	<string></string>
68 68
 	<key>LSApplicationQueriesSchemes</key>

+ 0 - 10
PaiAi/Paiai/Paiai.entitlements

@@ -1,10 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
-	<key>keychain-access-groups</key>
6
-	<array>
7
-		<string>$(AppIdentifierPrefix)com.Paiai.Paiai</string>
8
-	</array>
9
-</dict>
10
-</plist>

+ 6 - 7
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/Reusable/NetWork/NetworkApi.swift

@@ -31,10 +31,7 @@ class NetworkApi {
31 31
             return
32 32
         }
33 33
 
34
-        if err.isSessionDeinitializedError
35
-            || err.isSessionInvalidatedError
36
-            || err.isInvalidURLError
37
-            || err.isRequestAdaptationError {
34
+        if err.isInvalidURLError {
38 35
             Toast.show(message: "客户端网络请求出错")
39 36
         } else if err.isParameterEncoderError || err.isParameterEncodingError {
40 37
             Toast.show(message: "客户端参数编码出错")
@@ -46,9 +43,11 @@ class NetworkApi {
46 43
             Toast.show(message: "服务器返回数据出错")
47 44
         } else if err.isServerTrustEvaluationError {
48 45
             Toast.show(message: "服务器验证错误")
49
-        } else if err.isRequestRetryError {
50
-            Toast.show(message: "客户端重试出错")
51
-        } else if err.isExplicitlyCancelledError {
46
+        }
47
+//        else if err.isRequestRetryError {
48
+//            Toast.show(message: "客户端重试出错")
49
+//        }
50
+        else if err.isExplicitlyCancelledError {
52 51
             return
53 52
         } else {
54 53
             Toast.show(message: "网络出现未知错误")

+ 9 - 3
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/WXUserInfoRemoteAPI.swift

@@ -60,8 +60,8 @@ struct WXUserInfoRemoteAPI: UserInfoRemoteAPI {
60 60
                 }
61 61
                 switch errcode {
62 62
                 case 0:
63
-                    observer(.success(["appid": WXAppid, "secret": WXSecret,
64
-                                       "code": code, "grant_type": "authorization_code"]))
63
+                    return observer(.success(["appid": WXAppid, "secret": WXSecret,
64
+                                              "code": code, "grant_type": "authorization_code"]))
65 65
                 case -4:
66 66
                     Toast.show(message: "您拒绝授权,登录失败")
67 67
                 case -2:
@@ -89,12 +89,18 @@ struct WXUserInfoRemoteAPI: UserInfoRemoteAPI {
89 89
 
90 90
         return NetworkApi.share.get(resource: resource)
91 91
     }
92
+    
93
+    fileprivate func pareseWXUserInfo(json: JSON) -> [String: Any]? {
94
+        var data = json
95
+        data.removeValue(forKey: "privilege")
96
+        return data
97
+    }
92 98
 
93 99
     fileprivate func getWXUserInfo(param: [String: String]) -> Single<[String: Any]> {
94 100
         let resource = ContentResource<[String: Any]>(host: "https://api.weixin.qq.com",
95 101
                                                       path: .wxUserInfo,
96 102
                                                       parameter: param,
97
-                                                      parseJSON: { $0 })
103
+                                                      parseJSON: pareseWXUserInfo)
98 104
         return NetworkApi.share.get(resource: resource)
99 105
     }
100 106
 

+ 1 - 0
PaiAi/PaiaiDataKit/PaiaiDataKit.h

@@ -18,3 +18,4 @@ FOUNDATION_EXPORT const unsigned char PaiaiDataKitVersionString[];
18 18
 
19 19
 //微信SDK头文件
20 20
 #import "WXApi.h"
21
+#import "WechatAuthSDK.h"

+ 44 - 20
PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoDetailItemViewModel.swift

@@ -27,41 +27,65 @@ public final class PhotoDetailItemViewModel {
27 27
 
28 28
         self.item.subscribe(onNext: {[unowned self] (photoItem) in
29 29
             self.repository = PhotoDetailRepository(photoId: photoItem.photo_id, groupId: photoItem.group_id)
30
-            self.loadCommentItems().concat(self.loadThumbupUserItems()).subscribe(onCompleted: {
31
-                var val = self.item.value
32
-                val.comment_num = self.commentItems.value.count
33
-                val.thumbup_num = self.thumbupItems.value.count
34
-                self.item.accept(val)
35
-
36
-                let userInfo = [PhotoItemsOperator.key: PhotoItemsOperator.update(val.photo_id, val)]
37
-                NotificationCenter.default.post(name: .PhotoItemsChanged,
38
-                                                object: nil,
39
-                                                userInfo: userInfo)
40
-            }).disposed(by: self.disposeBag)
30
+            self.loadThumbupAndComment()
31
+//            Observable.zip(self.loadCommentItems(), self.loadThumbupUserItems()).subscribe(onNext: { _ in
32
+//                <#code#>
33
+//            }, onError: <#T##((Error) -> Void)?##((Error) -> Void)?##(Error) -> Void#>, onCompleted: <#T##(() -> Void)?##(() -> Void)?##() -> Void#>, onDisposed: <#T##(() -> Void)?##(() -> Void)?##() -> Void#>)
34
+//                .subscribe(onCompleted: {
35
+//
36
+//                var val = self.item.value
37
+//                val.comment_num = self.commentItems.value.count
38
+//                val.thumbup_num = self.thumbupItems.value.count
39
+//                self.item.accept(val)
40
+//
41
+//                let userInfo = [PhotoItemsOperator.key: PhotoItemsOperator.update(val.photo_id, val)]
42
+//                NotificationCenter.default.post(name: .PhotoItemsChanged,
43
+//                                                object: nil,
44
+//                                                userInfo: userInfo)
45
+//            }).disposed(by: self.disposeBag)
41 46
         }).disposed(by: disposeBag)
42 47
     }
43
-
44
-    private func loadThumbupUserItems() -> Completable {
45
-        return repository.loadThumbups().do(onSuccess: { (items) in
46
-            self.thumbupItems.accept(items)
47
-        }).asCompletable()
48
+    
49
+    private func loadThumbupAndComment() {
50
+        print(#function)
51
+        Single.zip(repository.loadComments(), repository.loadThumbups()).subscribe(onSuccess: {[unowned self] (commentItems, thumbupItems) in
52
+            self.commentItems.accept(commentItems)
53
+            self.thumbupItems.accept(thumbupItems)
54
+            self.update()
55
+        }).disposed(by: disposeBag)
56
+    }
57
+    
58
+    private func loadThumbupUserItems() -> Single<[PhotoThumbupUserItem]>  {
59
+        return repository.loadThumbups()
48 60
     }
49 61
 
50
-    private func loadCommentItems() -> Completable {
51
-        return repository.loadComments().do(onSuccess: { (items) in
52
-            self.commentItems.accept(items)
53
-        }).asCompletable()
62
+    private func loadCommentItems() -> Single<[PhotoCommentItem]>  {
63
+        return repository.loadComments()
64
+    }
65
+    
66
+    private func update() {
67
+        var val = self.item.value
68
+        val.comment_num = self.commentItems.value.count
69
+        val.thumbup_num = self.thumbupItems.value.count
70
+        let userInfo = [PhotoItemsOperator.key: PhotoItemsOperator.update(val.photo_id, val)]
71
+        NotificationCenter.default.post(name: .PhotoItemsChanged,
72
+                                        object: nil,
73
+                                        userInfo: userInfo)
54 74
     }
55 75
 
56 76
     public func submitThumbup() {
57 77
         repository.submitThumbup().subscribe(onSuccess: { items in
58 78
             self.thumbupItems.accept(items)
79
+            self.update()
59 80
         }).disposed(by: disposeBag)
60 81
     }
61 82
 
62 83
     public func submitComment(text: String) {
63 84
         repository.submitComment(text: text).subscribe(onSuccess: { (items) in
64 85
             self.commentItems.accept(items)
86
+            self.update()
65 87
         }).disposed(by: disposeBag)
66 88
     }
89
+    
90
+    
67 91
 }

+ 1 - 0
PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoDetailViewModel.swift

@@ -127,6 +127,7 @@ public final class PhotoDetailViewModel {
127 127
     }
128 128
 
129 129
     public func willShow(index: Int) {
130
+        print(index)
130 131
         currIndex = index
131 132
         _hasGetPrice.accept(false)
132 133
         itemViewModel.item.accept(_items.value[index])

+ 1 - 1
PaiAi/PaiaiUIKit/Reusable/UIKit/WaterfallFlowLayout/WaterfallFlowLayout.swift

@@ -125,7 +125,7 @@ public final class WaterfallFlowLayout: UICollectionViewLayout {
125 125
     }
126 126
     
127 127
     /// called at collectionView reload
128
-    func setNeedsLayout() {
128
+    public func setNeedsLayout() {
129 129
         isNeedLayout = true
130 130
     }
131 131
 }

+ 6 - 1
PaiAi/Paiai_iOS/App/Home/HomeViewController.swift

@@ -31,6 +31,10 @@ final class HomeViewController: UIViewController {
31 31
     override func viewDidAppear(_ animated: Bool) {
32 32
         super.viewDidAppear(animated)
33 33
     }
34
+    
35
+    override func viewDidDisappear(_ animated: Bool) {
36
+        super.viewDidDisappear(animated)
37
+    }
34 38
 
35 39
     func initalize() {
36 40
         collectionView.register(UINib(nibName: "PhotoCell",
@@ -95,7 +99,8 @@ fileprivate extension HomeViewController {
95 99
 
96 100
     func bindViewModelToRefreshing() {
97 101
         viewModel.isLoading
98
-            .subscribe(onNext: {[unowned self] flag in
102
+            .asDriver(onErrorJustReturn: true)
103
+            .drive(onNext: {[unowned self] flag in
99 104
                 if flag {
100 105
                     self.collectionView.endRefreshing(at: .top)
101 106
                 } else {

tonglan/adminSystem - Gogs: Go Git Service

1 Коммиты (e5cdf3254b2e2b3bbece92a66994aef7f62f7a51)

Автор SHA1 Сообщение Дата
  FFIB 11e3a9652a first лет %!s(int64=7): %!d(string=назад)