Showing
38 changed files
with
1038 additions
and
84 deletions
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key> | 7 | <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key> |
| 8 | <dict> | 8 | <dict> |
| 9 | <key>orderHint</key> | 9 | <key>orderHint</key> |
| 10 | - <integer>0</integer> | 10 | + <integer>1</integer> |
| 11 | </dict> | 11 | </dict> |
| 12 | </dict> | 12 | </dict> |
| 13 | </dict> | 13 | </dict> | ... | ... |
| ... | @@ -7,6 +7,9 @@ | ... | @@ -7,6 +7,9 @@ |
| 7 | objects = { | 7 | objects = { |
| 8 | 8 | ||
| 9 | /* Begin PBXBuildFile section */ | 9 | /* Begin PBXBuildFile section */ |
| 10 | + 1E116F682DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E116F672DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib */; }; | ||
| 11 | + 1E116F692DE845B1009AE791 /* ProfileFilterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E116F662DE845B1009AE791 /* ProfileFilterCollectionViewCell.swift */; }; | ||
| 12 | + 1E116F6B2DE86CBA009AE791 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E116F6A2DE86CAD009AE791 /* Models.swift */; }; | ||
| 10 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */; }; | 13 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */; }; |
| 11 | 1E64E1832DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */; }; | 14 | 1E64E1832DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */; }; |
| 12 | 1E64E1842DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */; }; | 15 | 1E64E1842DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */; }; |
| ... | @@ -27,6 +30,14 @@ | ... | @@ -27,6 +30,14 @@ |
| 27 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; | 30 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; |
| 28 | 1ED41E4C2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ED41E4A2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift */; }; | 31 | 1ED41E4C2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ED41E4A2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift */; }; |
| 29 | 1ED41E4D2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1ED41E4B2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib */; }; | 32 | 1ED41E4D2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1ED41E4B2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib */; }; |
| 33 | + 1EDBAF042DE843CA00911E79 /* ProfileCouponTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EDBAF032DE843CA00911E79 /* ProfileCouponTableViewCell.xib */; }; | ||
| 34 | + 1EDBAF052DE843CA00911E79 /* ProfileCouponTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDBAF022DE843CA00911E79 /* ProfileCouponTableViewCell.swift */; }; | ||
| 35 | + 1EDBAF082DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EDBAF072DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.xib */; }; | ||
| 36 | + 1EDBAF092DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDBAF062DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.swift */; }; | ||
| 37 | + 1EDBAF0C2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EDBAF0B2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib */; }; | ||
| 38 | + 1EDBAF0D2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDBAF0A2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.swift */; }; | ||
| 39 | + 1EDBAF102DE8443B00911E79 /* ProfileHeaderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EDBAF0F2DE8443B00911E79 /* ProfileHeaderTableViewCell.xib */; }; | ||
| 40 | + 1EDBAF112DE8443B00911E79 /* ProfileHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDBAF0E2DE8443B00911E79 /* ProfileHeaderTableViewCell.swift */; }; | ||
| 30 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; | 41 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; |
| 31 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; | 42 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; |
| 32 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; | 43 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; |
| ... | @@ -151,6 +162,9 @@ | ... | @@ -151,6 +162,9 @@ |
| 151 | 162 | ||
| 152 | /* Begin PBXFileReference section */ | 163 | /* Begin PBXFileReference section */ |
| 153 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | 164 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; |
| 165 | + 1E116F662DE845B1009AE791 /* ProfileFilterCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFilterCollectionViewCell.swift; sourceTree = "<group>"; }; | ||
| 166 | + 1E116F672DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileFilterCollectionViewCell.xib; sourceTree = "<group>"; }; | ||
| 167 | + 1E116F6A2DE86CAD009AE791 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; }; | ||
| 154 | 1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyableLabel.swift; sourceTree = "<group>"; }; | 168 | 1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyableLabel.swift; sourceTree = "<group>"; }; |
| 155 | 1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsOfferCollectionViewCell.swift; sourceTree = "<group>"; }; | 169 | 1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsOfferCollectionViewCell.swift; sourceTree = "<group>"; }; |
| 156 | 1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOfferCollectionViewCell.xib; sourceTree = "<group>"; }; | 170 | 1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOfferCollectionViewCell.xib; sourceTree = "<group>"; }; |
| ... | @@ -169,6 +183,14 @@ | ... | @@ -169,6 +183,14 @@ |
| 169 | 1EB4F42A2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOffersScrollTableViewCell.xib; sourceTree = "<group>"; }; | 183 | 1EB4F42A2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOffersScrollTableViewCell.xib; sourceTree = "<group>"; }; |
| 170 | 1ED41E4A2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsBannerOfferCollectionViewCell.swift; sourceTree = "<group>"; }; | 184 | 1ED41E4A2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsBannerOfferCollectionViewCell.swift; sourceTree = "<group>"; }; |
| 171 | 1ED41E4B2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsBannerOfferCollectionViewCell.xib; sourceTree = "<group>"; }; | 185 | 1ED41E4B2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsBannerOfferCollectionViewCell.xib; sourceTree = "<group>"; }; |
| 186 | + 1EDBAF022DE843CA00911E79 /* ProfileCouponTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileCouponTableViewCell.swift; sourceTree = "<group>"; }; | ||
| 187 | + 1EDBAF032DE843CA00911E79 /* ProfileCouponTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileCouponTableViewCell.xib; sourceTree = "<group>"; }; | ||
| 188 | + 1EDBAF062DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileCouponFiltersTableViewCell.swift; sourceTree = "<group>"; }; | ||
| 189 | + 1EDBAF072DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileCouponFiltersTableViewCell.xib; sourceTree = "<group>"; }; | ||
| 190 | + 1EDBAF0A2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileQuestionnaireTableViewCell.swift; sourceTree = "<group>"; }; | ||
| 191 | + 1EDBAF0B2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileQuestionnaireTableViewCell.xib; sourceTree = "<group>"; }; | ||
| 192 | + 1EDBAF0E2DE8443B00911E79 /* ProfileHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderTableViewCell.swift; sourceTree = "<group>"; }; | ||
| 193 | + 1EDBAF0F2DE8443B00911E79 /* ProfileHeaderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileHeaderTableViewCell.xib; sourceTree = "<group>"; }; | ||
| 172 | A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; | 194 | A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; |
| 173 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; | 195 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; |
| 174 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; | 196 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; |
| ... | @@ -311,6 +333,7 @@ | ... | @@ -311,6 +333,7 @@ |
| 311 | 1E00E6A22DDF71BD0012F164 /* models */ = { | 333 | 1E00E6A22DDF71BD0012F164 /* models */ = { |
| 312 | isa = PBXGroup; | 334 | isa = PBXGroup; |
| 313 | children = ( | 335 | children = ( |
| 336 | + 1E116F6A2DE86CAD009AE791 /* Models.swift */, | ||
| 314 | ); | 337 | ); |
| 315 | path = models; | 338 | path = models; |
| 316 | sourceTree = "<group>"; | 339 | sourceTree = "<group>"; |
| ... | @@ -383,6 +406,11 @@ | ... | @@ -383,6 +406,11 @@ |
| 383 | 1EA8E5BC2DDF34FB00CD3418 /* cells */ = { | 406 | 1EA8E5BC2DDF34FB00CD3418 /* cells */ = { |
| 384 | isa = PBXGroup; | 407 | isa = PBXGroup; |
| 385 | children = ( | 408 | children = ( |
| 409 | + 1EDBAF122DE844C500911E79 /* ProfileFilterCollectionViewCell */, | ||
| 410 | + 1EDBAF012DE8439000911E79 /* ProfileCouponTableViewCell */, | ||
| 411 | + 1EDBAF002DE842A700911E79 /* ProfileCouponFiltersTableViewCell */, | ||
| 412 | + 1EDBAEFF2DE8420500911E79 /* ProfileQuestionnaireTableViewCell */, | ||
| 413 | + 1EDBAEFE2DE841CE00911E79 /* ProfileHeaderTableViewCell */, | ||
| 386 | 1E64E1802DE48DD600543217 /* MyRewardsOfferCollectionViewCell */, | 414 | 1E64E1802DE48DD600543217 /* MyRewardsOfferCollectionViewCell */, |
| 387 | 1ED41E492DE0C21800836ABA /* MyRewardsBannerOfferCollectionViewCell */, | 415 | 1ED41E492DE0C21800836ABA /* MyRewardsBannerOfferCollectionViewCell */, |
| 388 | 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */, | 416 | 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */, |
| ... | @@ -418,6 +446,51 @@ | ... | @@ -418,6 +446,51 @@ |
| 418 | path = MyRewardsBannerOfferCollectionViewCell; | 446 | path = MyRewardsBannerOfferCollectionViewCell; |
| 419 | sourceTree = "<group>"; | 447 | sourceTree = "<group>"; |
| 420 | }; | 448 | }; |
| 449 | + 1EDBAEFE2DE841CE00911E79 /* ProfileHeaderTableViewCell */ = { | ||
| 450 | + isa = PBXGroup; | ||
| 451 | + children = ( | ||
| 452 | + 1EDBAF0E2DE8443B00911E79 /* ProfileHeaderTableViewCell.swift */, | ||
| 453 | + 1EDBAF0F2DE8443B00911E79 /* ProfileHeaderTableViewCell.xib */, | ||
| 454 | + ); | ||
| 455 | + path = ProfileHeaderTableViewCell; | ||
| 456 | + sourceTree = "<group>"; | ||
| 457 | + }; | ||
| 458 | + 1EDBAEFF2DE8420500911E79 /* ProfileQuestionnaireTableViewCell */ = { | ||
| 459 | + isa = PBXGroup; | ||
| 460 | + children = ( | ||
| 461 | + 1EDBAF0A2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.swift */, | ||
| 462 | + 1EDBAF0B2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib */, | ||
| 463 | + ); | ||
| 464 | + path = ProfileQuestionnaireTableViewCell; | ||
| 465 | + sourceTree = "<group>"; | ||
| 466 | + }; | ||
| 467 | + 1EDBAF002DE842A700911E79 /* ProfileCouponFiltersTableViewCell */ = { | ||
| 468 | + isa = PBXGroup; | ||
| 469 | + children = ( | ||
| 470 | + 1EDBAF062DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.swift */, | ||
| 471 | + 1EDBAF072DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.xib */, | ||
| 472 | + ); | ||
| 473 | + path = ProfileCouponFiltersTableViewCell; | ||
| 474 | + sourceTree = "<group>"; | ||
| 475 | + }; | ||
| 476 | + 1EDBAF012DE8439000911E79 /* ProfileCouponTableViewCell */ = { | ||
| 477 | + isa = PBXGroup; | ||
| 478 | + children = ( | ||
| 479 | + 1EDBAF022DE843CA00911E79 /* ProfileCouponTableViewCell.swift */, | ||
| 480 | + 1EDBAF032DE843CA00911E79 /* ProfileCouponTableViewCell.xib */, | ||
| 481 | + ); | ||
| 482 | + path = ProfileCouponTableViewCell; | ||
| 483 | + sourceTree = "<group>"; | ||
| 484 | + }; | ||
| 485 | + 1EDBAF122DE844C500911E79 /* ProfileFilterCollectionViewCell */ = { | ||
| 486 | + isa = PBXGroup; | ||
| 487 | + children = ( | ||
| 488 | + 1E116F662DE845B1009AE791 /* ProfileFilterCollectionViewCell.swift */, | ||
| 489 | + 1E116F672DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib */, | ||
| 490 | + ); | ||
| 491 | + path = ProfileFilterCollectionViewCell; | ||
| 492 | + sourceTree = "<group>"; | ||
| 493 | + }; | ||
| 421 | 98AD36FA62350CEABCD961A7 /* Frameworks */ = { | 494 | 98AD36FA62350CEABCD961A7 /* Frameworks */ = { |
| 422 | isa = PBXGroup; | 495 | isa = PBXGroup; |
| 423 | children = ( | 496 | children = ( |
| ... | @@ -833,10 +906,14 @@ | ... | @@ -833,10 +906,14 @@ |
| 833 | 1E917CD62DDF64B2002221D8 /* MyRewardsViewController.xib in Resources */, | 906 | 1E917CD62DDF64B2002221D8 /* MyRewardsViewController.xib in Resources */, |
| 834 | E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */, | 907 | E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */, |
| 835 | 1ED41E4D2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib in Resources */, | 908 | 1ED41E4D2DE0C24D00836ABA /* MyRewardsBannerOfferCollectionViewCell.xib in Resources */, |
| 909 | + 1EDBAF082DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.xib in Resources */, | ||
| 910 | + 1EDBAF042DE843CA00911E79 /* ProfileCouponTableViewCell.xib in Resources */, | ||
| 836 | E6A778F4282933E60045BBA8 /* WLNativeAdCollectionViewCell.xib in Resources */, | 911 | E6A778F4282933E60045BBA8 /* WLNativeAdCollectionViewCell.xib in Resources */, |
| 837 | E6A778F3282933E60045BBA8 /* WLNativeAdTableViewCell.xib in Resources */, | 912 | E6A778F3282933E60045BBA8 /* WLNativeAdTableViewCell.xib in Resources */, |
| 913 | + 1EDBAF0C2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib in Resources */, | ||
| 838 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, | 914 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, |
| 839 | E6A77905282933E60045BBA8 /* warp_white_back_button@2x.png in Resources */, | 915 | E6A77905282933E60045BBA8 /* warp_white_back_button@2x.png in Resources */, |
| 916 | + 1E116F682DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib in Resources */, | ||
| 840 | 1EB4F4252DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib in Resources */, | 917 | 1EB4F4252DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib in Resources */, |
| 841 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */, | 918 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */, |
| 842 | 1E64E1832DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib in Resources */, | 919 | 1E64E1832DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib in Resources */, |
| ... | @@ -844,6 +921,7 @@ | ... | @@ -844,6 +921,7 @@ |
| 844 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */, | 921 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */, |
| 845 | E6A77908282933E60045BBA8 /* warp_white_close_button@2x.png in Resources */, | 922 | E6A77908282933E60045BBA8 /* warp_white_close_button@2x.png in Resources */, |
| 846 | 1EB4F42B2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib in Resources */, | 923 | 1EB4F42B2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib in Resources */, |
| 924 | + 1EDBAF102DE8443B00911E79 /* ProfileHeaderTableViewCell.xib in Resources */, | ||
| 847 | 1E917CDB2DDF68C7002221D8 /* CouponViewController.xib in Resources */, | 925 | 1E917CDB2DDF68C7002221D8 /* CouponViewController.xib in Resources */, |
| 848 | E6A77909282933E60045BBA8 /* warp_white_forward_button@2x.png in Resources */, | 926 | E6A77909282933E60045BBA8 /* warp_white_forward_button@2x.png in Resources */, |
| 849 | E6A77906282933E60045BBA8 /* warp_white_forward_button.png in Resources */, | 927 | E6A77906282933E60045BBA8 /* warp_white_forward_button.png in Resources */, |
| ... | @@ -898,6 +976,8 @@ | ... | @@ -898,6 +976,8 @@ |
| 898 | E6A77900282933E60045BBA8 /* WLInboxItemViewController.m in Sources */, | 976 | E6A77900282933E60045BBA8 /* WLInboxItemViewController.m in Sources */, |
| 899 | E6A7793E282933E70045BBA8 /* AFHTTPSessionManager.m in Sources */, | 977 | E6A7793E282933E70045BBA8 /* AFHTTPSessionManager.m in Sources */, |
| 900 | E6A77933282933E70045BBA8 /* UIButton+AFNetworking.m in Sources */, | 978 | E6A77933282933E70045BBA8 /* UIButton+AFNetworking.m in Sources */, |
| 979 | + 1E116F692DE845B1009AE791 /* ProfileFilterCollectionViewCell.swift in Sources */, | ||
| 980 | + 1EDBAF0D2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.swift in Sources */, | ||
| 901 | E6A77919282933E60045BBA8 /* Warply.m in Sources */, | 981 | E6A77919282933E60045BBA8 /* Warply.m in Sources */, |
| 902 | E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */, | 982 | E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */, |
| 903 | E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */, | 983 | E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */, |
| ... | @@ -917,8 +997,10 @@ | ... | @@ -917,8 +997,10 @@ |
| 917 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, | 997 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, |
| 918 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, | 998 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, |
| 919 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, | 999 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, |
| 1000 | + 1E116F6B2DE86CBA009AE791 /* Models.swift in Sources */, | ||
| 920 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, | 1001 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, |
| 921 | E6A77938282933E70045BBA8 /* AFImageDownloader.m in Sources */, | 1002 | E6A77938282933E70045BBA8 /* AFImageDownloader.m in Sources */, |
| 1003 | + 1EDBAF092DE843FB00911E79 /* ProfileCouponFiltersTableViewCell.swift in Sources */, | ||
| 922 | E6A778ED282933E60045BBA8 /* WLCustomNativeCollectionViewCell.m in Sources */, | 1004 | E6A778ED282933E60045BBA8 /* WLCustomNativeCollectionViewCell.m in Sources */, |
| 923 | E6A7790D282933E60045BBA8 /* WLLocationManager.m in Sources */, | 1005 | E6A7790D282933E60045BBA8 /* WLLocationManager.m in Sources */, |
| 924 | E6A7793D282933E70045BBA8 /* AFURLResponseSerialization.m in Sources */, | 1006 | E6A7793D282933E70045BBA8 /* AFURLResponseSerialization.m in Sources */, |
| ... | @@ -932,6 +1014,8 @@ | ... | @@ -932,6 +1014,8 @@ |
| 932 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */, | 1014 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */, |
| 933 | E6A77947282933E70045BBA8 /* FMDatabaseQueue.m in Sources */, | 1015 | E6A77947282933E70045BBA8 /* FMDatabaseQueue.m in Sources */, |
| 934 | E6A77922282933E60045BBA8 /* NSData+SSToolkitAdditions.m in Sources */, | 1016 | E6A77922282933E60045BBA8 /* NSData+SSToolkitAdditions.m in Sources */, |
| 1017 | + 1EDBAF112DE8443B00911E79 /* ProfileHeaderTableViewCell.swift in Sources */, | ||
| 1018 | + 1EDBAF052DE843CA00911E79 /* ProfileCouponTableViewCell.swift in Sources */, | ||
| 935 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, | 1019 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, |
| 936 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, | 1020 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, |
| 937 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | 1021 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | ... | ... |
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key> | 7 | <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key> |
| 8 | <dict> | 8 | <dict> |
| 9 | <key>orderHint</key> | 9 | <key>orderHint</key> |
| 10 | - <integer>1</integer> | 10 | + <integer>0</integer> |
| 11 | </dict> | 11 | </dict> |
| 12 | </dict> | 12 | </dict> |
| 13 | </dict> | 13 | </dict> | ... | ... |
No preview for this file type
214 KB
214 KB
214 KB
| 1 | { | 1 | { |
| 2 | "images" : [ | 2 | "images" : [ |
| 3 | { | 3 | { |
| 4 | - "filename" : "contest_banner_5.png", | 4 | + "filename" : "questionnaire_banner.png", |
| 5 | "idiom" : "universal", | 5 | "idiom" : "universal", |
| 6 | "scale" : "1x" | 6 | "scale" : "1x" |
| 7 | }, | 7 | }, |
| 8 | { | 8 | { |
| 9 | - "filename" : "contest_banner_5 1.png", | 9 | + "filename" : "questionnaire_banner 1.png", |
| 10 | "idiom" : "universal", | 10 | "idiom" : "universal", |
| 11 | "scale" : "2x" | 11 | "scale" : "2x" |
| 12 | }, | 12 | }, |
| 13 | { | 13 | { |
| 14 | - "filename" : "contest_banner_5 2.png", | 14 | + "filename" : "questionnaire_banner 2.png", |
| 15 | "idiom" : "universal", | 15 | "idiom" : "universal", |
| 16 | "scale" : "3x" | 16 | "scale" : "3x" |
| 17 | } | 17 | } | ... | ... |
78.4 KB
78.4 KB
78.4 KB
| ... | @@ -8,7 +8,8 @@ | ... | @@ -8,7 +8,8 @@ |
| 8 | import UIKit | 8 | import UIKit |
| 9 | 9 | ||
| 10 | protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { | 10 | protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { |
| 11 | - func didSelectBannerOffer(_ offer: OfferModel) | 11 | + func didSelectBannerOffer(_ index: Int) |
| 12 | + func didTapProfileButton() | ||
| 12 | } | 13 | } |
| 13 | 14 | ||
| 14 | @objc public class MyRewardsBannerOffersScrollTableViewCell: UITableViewCell { | 15 | @objc public class MyRewardsBannerOffersScrollTableViewCell: UITableViewCell { |
| ... | @@ -17,6 +18,7 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { | ... | @@ -17,6 +18,7 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { |
| 17 | @IBOutlet weak var tagView2: UIView! | 18 | @IBOutlet weak var tagView2: UIView! |
| 18 | @IBOutlet weak var tagLabel2: UILabel! | 19 | @IBOutlet weak var tagLabel2: UILabel! |
| 19 | @IBOutlet weak var profileImage: UIImageView! | 20 | @IBOutlet weak var profileImage: UIImageView! |
| 21 | + @IBOutlet weak var profileButton: UIButton! | ||
| 20 | @IBOutlet weak var collectionView: UICollectionView! | 22 | @IBOutlet weak var collectionView: UICollectionView! |
| 21 | @IBOutlet weak var pageControl: UIPageControl! | 23 | @IBOutlet weak var pageControl: UIPageControl! |
| 22 | 24 | ||
| ... | @@ -29,6 +31,8 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { | ... | @@ -29,6 +31,8 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { |
| 29 | 31 | ||
| 30 | profileImage.image = UIImage(named: "profile_pic_default", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | 32 | profileImage.image = UIImage(named: "profile_pic_default", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) |
| 31 | 33 | ||
| 34 | + profileButton.addTarget(self, action: #selector(profileButtonTapped), for: .touchUpInside) | ||
| 35 | + | ||
| 32 | tagView1.backgroundColor = UIColor(rgb: 0x09914E) | 36 | tagView1.backgroundColor = UIColor(rgb: 0x09914E) |
| 33 | tagView1.layer.cornerRadius = 4.0 | 37 | tagView1.layer.cornerRadius = 4.0 |
| 34 | tagLabel1.font = UIFont(name: "PingLCG-Regular", size: 17) | 38 | tagLabel1.font = UIFont(name: "PingLCG-Regular", size: 17) |
| ... | @@ -95,6 +99,10 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { | ... | @@ -95,6 +99,10 @@ protocol MyRewardsBannerOffersScrollTableViewCellDelegate: AnyObject { |
| 95 | 99 | ||
| 96 | self.collectionView.reloadData(); | 100 | self.collectionView.reloadData(); |
| 97 | } | 101 | } |
| 102 | + | ||
| 103 | + @objc private func profileButtonTapped() { | ||
| 104 | + delegate?.didTapProfileButton() | ||
| 105 | + } | ||
| 98 | } | 106 | } |
| 99 | 107 | ||
| 100 | extension MyRewardsBannerOffersScrollTableViewCell: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIScrollViewDelegate { | 108 | extension MyRewardsBannerOffersScrollTableViewCell: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIScrollViewDelegate { |
| ... | @@ -121,7 +129,7 @@ extension MyRewardsBannerOffersScrollTableViewCell: UICollectionViewDataSource, | ... | @@ -121,7 +129,7 @@ extension MyRewardsBannerOffersScrollTableViewCell: UICollectionViewDataSource, |
| 121 | // Get the selected offer | 129 | // Get the selected offer |
| 122 | if let offer = self.data?.offers[indexPath.row] { | 130 | if let offer = self.data?.offers[indexPath.row] { |
| 123 | // Call the delegate method to notify the parent | 131 | // Call the delegate method to notify the parent |
| 124 | - delegate?.didSelectBannerOffer(offer) | 132 | + delegate?.didSelectBannerOffer(indexPath.row) |
| 125 | } | 133 | } |
| 126 | } | 134 | } |
| 127 | 135 | ... | ... |
| ... | @@ -12,18 +12,18 @@ | ... | @@ -12,18 +12,18 @@ |
| 12 | <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="MyRewardsBannerOffersScrollTableViewCell" rowHeight="349" id="KGk-i7-Jjw" customClass="MyRewardsBannerOffersScrollTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | 12 | <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="MyRewardsBannerOffersScrollTableViewCell" rowHeight="349" id="KGk-i7-Jjw" customClass="MyRewardsBannerOffersScrollTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> |
| 13 | <rect key="frame" x="0.0" y="0.0" width="413" height="349"/> | 13 | <rect key="frame" x="0.0" y="0.0" width="413" height="349"/> |
| 14 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | 14 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
| 15 | - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | 15 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> |
| 16 | <rect key="frame" x="0.0" y="0.0" width="413" height="349"/> | 16 | <rect key="frame" x="0.0" y="0.0" width="413" height="349"/> |
| 17 | <autoresizingMask key="autoresizingMask"/> | 17 | <autoresizingMask key="autoresizingMask"/> |
| 18 | <subviews> | 18 | <subviews> |
| 19 | - <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VzF-dQ-3Wa" userLabel="Parent View"> | 19 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VzF-dQ-3Wa" userLabel="Parent View"> |
| 20 | - <rect key="frame" x="0.0" y="0.0" width="413" height="298"/> | 20 | + <rect key="frame" x="0.0" y="0.0" width="413" height="450"/> |
| 21 | <subviews> | 21 | <subviews> |
| 22 | - <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JTs-J5-DO2" userLabel="Top View"> | 22 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JTs-J5-DO2" userLabel="Top View"> |
| 23 | - <rect key="frame" x="24" y="36" width="365" height="43"/> | 23 | + <rect key="frame" x="24" y="36" width="365" height="35"/> |
| 24 | <subviews> | 24 | <subviews> |
| 25 | - <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="h09-MS-XKy"> | 25 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="h09-MS-XKy"> |
| 26 | - <rect key="frame" x="0.0" y="8.6666666666666643" width="58" height="26"/> | 26 | + <rect key="frame" x="0.0" y="4.6666666666666643" width="58" height="26"/> |
| 27 | <subviews> | 27 | <subviews> |
| 28 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Green" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4m7-JY-MDY"> | 28 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Green" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4m7-JY-MDY"> |
| 29 | <rect key="frame" x="6" y="3" width="46" height="20"/> | 29 | <rect key="frame" x="6" y="3" width="46" height="20"/> |
| ... | @@ -41,8 +41,8 @@ | ... | @@ -41,8 +41,8 @@ |
| 41 | <constraint firstItem="4m7-JY-MDY" firstAttribute="top" secondItem="h09-MS-XKy" secondAttribute="top" constant="3" id="tui-5x-ntO"/> | 41 | <constraint firstItem="4m7-JY-MDY" firstAttribute="top" secondItem="h09-MS-XKy" secondAttribute="top" constant="3" id="tui-5x-ntO"/> |
| 42 | </constraints> | 42 | </constraints> |
| 43 | </view> | 43 | </view> |
| 44 | - <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="H5g-xq-68p"> | 44 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H5g-xq-68p"> |
| 45 | - <rect key="frame" x="66" y="8.6666666666666643" width="61.666666666666657" height="26"/> | 45 | + <rect key="frame" x="66" y="4.6666666666666643" width="61.666666666666657" height="26"/> |
| 46 | <subviews> | 46 | <subviews> |
| 47 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Family" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-wM-hV8"> | 47 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Family" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-wM-hV8"> |
| 48 | <rect key="frame" x="6" y="3" width="49.666666666666664" height="20"/> | 48 | <rect key="frame" x="6" y="3" width="49.666666666666664" height="20"/> |
| ... | @@ -60,8 +60,8 @@ | ... | @@ -60,8 +60,8 @@ |
| 60 | <constraint firstItem="WN9-wM-hV8" firstAttribute="top" secondItem="H5g-xq-68p" secondAttribute="top" constant="3" id="pwW-Ed-yv2"/> | 60 | <constraint firstItem="WN9-wM-hV8" firstAttribute="top" secondItem="H5g-xq-68p" secondAttribute="top" constant="3" id="pwW-Ed-yv2"/> |
| 61 | </constraints> | 61 | </constraints> |
| 62 | </view> | 62 | </view> |
| 63 | - <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cf-tr-Vjf"> | 63 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5cf-tr-Vjf"> |
| 64 | - <rect key="frame" x="322" y="0.0" width="43" height="43"/> | 64 | + <rect key="frame" x="322" y="0.0" width="43" height="35"/> |
| 65 | <subviews> | 65 | <subviews> |
| 66 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fZO-NB-UyL"> | 66 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fZO-NB-UyL"> |
| 67 | <rect key="frame" x="0.0" y="0.0" width="43" height="43"/> | 67 | <rect key="frame" x="0.0" y="0.0" width="43" height="43"/> |
| ... | @@ -71,13 +71,25 @@ | ... | @@ -71,13 +71,25 @@ |
| 71 | <constraint firstAttribute="height" constant="43" id="lZJ-VG-4fl"/> | 71 | <constraint firstAttribute="height" constant="43" id="lZJ-VG-4fl"/> |
| 72 | </constraints> | 72 | </constraints> |
| 73 | </imageView> | 73 | </imageView> |
| 74 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="loI-CB-MX1" userLabel="ProfileButton"> | ||
| 75 | + <rect key="frame" x="0.0" y="0.0" width="43" height="35"/> | ||
| 76 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 77 | + <state key="normal" title="Button"/> | ||
| 78 | + <buttonConfiguration key="configuration" style="plain" title="Button"> | ||
| 79 | + <color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 80 | + </buttonConfiguration> | ||
| 81 | + </button> | ||
| 74 | </subviews> | 82 | </subviews> |
| 75 | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | 83 | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| 76 | <constraints> | 84 | <constraints> |
| 85 | + <constraint firstAttribute="trailing" secondItem="loI-CB-MX1" secondAttribute="trailing" id="0PQ-cq-sCt"/> | ||
| 77 | <constraint firstItem="fZO-NB-UyL" firstAttribute="leading" secondItem="5cf-tr-Vjf" secondAttribute="leading" id="Bfw-5S-wqz"/> | 86 | <constraint firstItem="fZO-NB-UyL" firstAttribute="leading" secondItem="5cf-tr-Vjf" secondAttribute="leading" id="Bfw-5S-wqz"/> |
| 78 | <constraint firstItem="fZO-NB-UyL" firstAttribute="top" secondItem="5cf-tr-Vjf" secondAttribute="top" id="WCt-TJ-XQc"/> | 87 | <constraint firstItem="fZO-NB-UyL" firstAttribute="top" secondItem="5cf-tr-Vjf" secondAttribute="top" id="WCt-TJ-XQc"/> |
| 88 | + <constraint firstItem="loI-CB-MX1" firstAttribute="top" secondItem="5cf-tr-Vjf" secondAttribute="top" id="XKb-DI-owX"/> | ||
| 79 | <constraint firstAttribute="trailing" secondItem="fZO-NB-UyL" secondAttribute="trailing" id="Z0D-wE-fgE"/> | 89 | <constraint firstAttribute="trailing" secondItem="fZO-NB-UyL" secondAttribute="trailing" id="Z0D-wE-fgE"/> |
| 90 | + <constraint firstItem="loI-CB-MX1" firstAttribute="leading" secondItem="5cf-tr-Vjf" secondAttribute="leading" id="fM6-dS-psa"/> | ||
| 80 | <constraint firstAttribute="bottom" secondItem="fZO-NB-UyL" secondAttribute="bottom" id="nuy-88-N5B"/> | 91 | <constraint firstAttribute="bottom" secondItem="fZO-NB-UyL" secondAttribute="bottom" id="nuy-88-N5B"/> |
| 92 | + <constraint firstAttribute="bottom" secondItem="loI-CB-MX1" secondAttribute="bottom" id="rMQ-Ec-OZs"/> | ||
| 81 | </constraints> | 93 | </constraints> |
| 82 | </view> | 94 | </view> |
| 83 | </subviews> | 95 | </subviews> |
| ... | @@ -93,8 +105,8 @@ | ... | @@ -93,8 +105,8 @@ |
| 93 | <constraint firstItem="H5g-xq-68p" firstAttribute="leading" secondItem="h09-MS-XKy" secondAttribute="trailing" constant="8" id="wqx-Hc-3YH"/> | 105 | <constraint firstItem="H5g-xq-68p" firstAttribute="leading" secondItem="h09-MS-XKy" secondAttribute="trailing" constant="8" id="wqx-Hc-3YH"/> |
| 94 | </constraints> | 106 | </constraints> |
| 95 | </view> | 107 | </view> |
| 96 | - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="I7z-Fz-SNP"> | 108 | + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="I7z-Fz-SNP"> |
| 97 | - <rect key="frame" x="0.0" y="149" width="413" height="0.0"/> | 109 | + <rect key="frame" x="0.0" y="76" width="413" height="348"/> |
| 98 | <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | 110 | <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| 99 | <constraints> | 111 | <constraints> |
| 100 | <constraint firstAttribute="height" constant="348" id="aEf-Xl-A2C"/> | 112 | <constraint firstAttribute="height" constant="348" id="aEf-Xl-A2C"/> |
| ... | @@ -111,8 +123,8 @@ | ... | @@ -111,8 +123,8 @@ |
| 111 | <outlet property="delegate" destination="KGk-i7-Jjw" id="fQ4-0u-38c"/> | 123 | <outlet property="delegate" destination="KGk-i7-Jjw" id="fQ4-0u-38c"/> |
| 112 | </connections> | 124 | </connections> |
| 113 | </collectionView> | 125 | </collectionView> |
| 114 | - <pageControl opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="3" translatesAutoresizingMaskIntoConstraints="NO" id="lOm-CZ-dVG"> | 126 | + <pageControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="3" translatesAutoresizingMaskIntoConstraints="NO" id="lOm-CZ-dVG"> |
| 115 | - <rect key="frame" x="170" y="136" width="73" height="26"/> | 127 | + <rect key="frame" x="170" y="424" width="73" height="26"/> |
| 116 | </pageControl> | 128 | </pageControl> |
| 117 | </subviews> | 129 | </subviews> |
| 118 | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | 130 | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| ... | @@ -142,6 +154,7 @@ | ... | @@ -142,6 +154,7 @@ |
| 142 | <connections> | 154 | <connections> |
| 143 | <outlet property="collectionView" destination="I7z-Fz-SNP" id="yrF-mR-aQu"/> | 155 | <outlet property="collectionView" destination="I7z-Fz-SNP" id="yrF-mR-aQu"/> |
| 144 | <outlet property="pageControl" destination="lOm-CZ-dVG" id="Skf-hV-rjH"/> | 156 | <outlet property="pageControl" destination="lOm-CZ-dVG" id="Skf-hV-rjH"/> |
| 157 | + <outlet property="profileButton" destination="loI-CB-MX1" id="VTG-C3-3KA"/> | ||
| 145 | <outlet property="profileImage" destination="fZO-NB-UyL" id="l05-qG-DJv"/> | 158 | <outlet property="profileImage" destination="fZO-NB-UyL" id="l05-qG-DJv"/> |
| 146 | <outlet property="tagLabel1" destination="4m7-JY-MDY" id="Min-YW-AN2"/> | 159 | <outlet property="tagLabel1" destination="4m7-JY-MDY" id="Min-YW-AN2"/> |
| 147 | <outlet property="tagLabel2" destination="WN9-wM-hV8" id="yWk-1S-4Zk"/> | 160 | <outlet property="tagLabel2" destination="WN9-wM-hV8" id="yWk-1S-4Zk"/> | ... | ... |
| 1 | +// | ||
| 2 | +// ProfileCouponFiltersTableViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +protocol ProfileCouponFiltersTableViewCellDelegate: AnyObject { | ||
| 11 | + func didSelectFilter(_ filter: CouponFilterModel) | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +@objc public class ProfileCouponFiltersTableViewCell: UITableViewCell { | ||
| 15 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 16 | + @IBOutlet weak var collectionView: UICollectionView! | ||
| 17 | + | ||
| 18 | + weak var delegate: ProfileCouponFiltersTableViewCellDelegate? | ||
| 19 | + var data: [CouponFilterModel]? | ||
| 20 | + | ||
| 21 | + public override func awakeFromNib() { | ||
| 22 | + super.awakeFromNib() | ||
| 23 | + | ||
| 24 | + titleLabel.font = UIFont(name: "PingLCG-Bold", size: 18) | ||
| 25 | + titleLabel.textColor = UIColor(rgb: 0x000F1E) | ||
| 26 | + | ||
| 27 | + // Register XIBs for collection view cells | ||
| 28 | + collectionView.register(UINib(nibName: "ProfileFilterCollectionViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellWithReuseIdentifier: "ProfileFilterCollectionViewCell") | ||
| 29 | + | ||
| 30 | + // Fix background colors | ||
| 31 | +// collectionView.backgroundColor = UIColor.clear | ||
| 32 | +// self.backgroundColor = UIColor.clear | ||
| 33 | +// self.contentView.backgroundColor = UIColor.clear | ||
| 34 | + | ||
| 35 | + // Remove content insets and gaps | ||
| 36 | + collectionView.contentInset = UIEdgeInsets.zero | ||
| 37 | + collectionView.scrollIndicatorInsets = UIEdgeInsets.zero | ||
| 38 | + | ||
| 39 | + if #available(iOS 11.0, *) { | ||
| 40 | + collectionView.contentInsetAdjustmentBehavior = .never | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + // Configure collection view layout | ||
| 44 | + if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { | ||
| 45 | + layout.scrollDirection = .horizontal | ||
| 46 | + layout.minimumLineSpacing = 15 | ||
| 47 | + layout.minimumInteritemSpacing = 0 | ||
| 48 | + layout.sectionInset = UIEdgeInsets(top: 0, left: 24, bottom: 0, right: 24) | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + // Enable paging for smooth banner scrolling | ||
| 52 | + // collectionView.isPagingEnabled = true | ||
| 53 | + collectionView.showsHorizontalScrollIndicator = false | ||
| 54 | + | ||
| 55 | + // Set delegates | ||
| 56 | + collectionView.delegate = self | ||
| 57 | + collectionView.dataSource = self | ||
| 58 | + | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
| 62 | + super.setSelected(selected, animated: animated) | ||
| 63 | + | ||
| 64 | + // Configure the view for the selected state | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + func configureCell(data: [CouponFilterModel]?) { | ||
| 68 | + self.data = data | ||
| 69 | + | ||
| 70 | + self.collectionView.reloadData(); | ||
| 71 | + } | ||
| 72 | +} | ||
| 73 | + | ||
| 74 | +extension ProfileCouponFiltersTableViewCell: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + public func numberOfSections(in collectionView: UICollectionView) -> Int { | ||
| 78 | + return 1 | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { | ||
| 82 | + return self.data?.count ?? 0 | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { | ||
| 86 | + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProfileFilterCollectionViewCell", for: indexPath) as! ProfileFilterCollectionViewCell | ||
| 87 | + if let filter = self.data?[indexPath.row] { | ||
| 88 | + // TODO: Fix dynamic | ||
| 89 | + let isSelected = self.data?[indexPath.row].title == "Ενεργά" | ||
| 90 | + cell.configureCell(data: filter, isSelected: isSelected) | ||
| 91 | + } | ||
| 92 | + return cell; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { | ||
| 96 | + if let filter = self.data?[indexPath.row] { | ||
| 97 | + delegate?.didSelectFilter(filter) | ||
| 98 | + } | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + // MARK: - UICollectionViewDelegateFlowLayout | ||
| 102 | +// public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { | ||
| 103 | +// if self.data?.title == "Αγαπημένα" { | ||
| 104 | +// return CGSize(width: 275, height: 350) | ||
| 105 | +// } else { | ||
| 106 | +// return CGSize(width: 257, height: 232) | ||
| 107 | +// } | ||
| 108 | +// } | ||
| 109 | + | ||
| 110 | + // Distance Between Item Cells | ||
| 111 | + public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { | ||
| 112 | + return 15 | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { | ||
| 116 | + return 0 | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + // Cell Margin | ||
| 120 | + public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { | ||
| 121 | + return UIEdgeInsets(top: 0, left: 24, bottom: 0, right: 24) | ||
| 122 | + } | ||
| 123 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
| 3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
| 4 | + <dependencies> | ||
| 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
| 6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
| 7 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
| 8 | + </dependencies> | ||
| 9 | + <objects> | ||
| 10 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
| 11 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
| 12 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ProfileCouponFiltersTableViewCell" rowHeight="161" id="KGk-i7-Jjw" customClass="ProfileCouponFiltersTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 13 | + <rect key="frame" x="0.0" y="0.0" width="320" height="161"/> | ||
| 14 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
| 15 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
| 16 | + <rect key="frame" x="0.0" y="0.0" width="320" height="161"/> | ||
| 17 | + <autoresizingMask key="autoresizingMask"/> | ||
| 18 | + <subviews> | ||
| 19 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1kR-zd-duR" userLabel="ParentView"> | ||
| 20 | + <rect key="frame" x="0.0" y="0.0" width="320" height="161"/> | ||
| 21 | + <subviews> | ||
| 22 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mga-ND-qoh"> | ||
| 23 | + <rect key="frame" x="24" y="26" width="272" height="49"/> | ||
| 24 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 25 | + <nil key="textColor"/> | ||
| 26 | + <nil key="highlightedColor"/> | ||
| 27 | + </label> | ||
| 28 | + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="Ddn-dN-xH1"> | ||
| 29 | + <rect key="frame" x="0.0" y="118" width="320" height="43"/> | ||
| 30 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 31 | + <constraints> | ||
| 32 | + <constraint firstAttribute="height" constant="43" id="5nG-1p-kic"/> | ||
| 33 | + </constraints> | ||
| 34 | + <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" automaticEstimatedItemSize="YES" minimumLineSpacing="5" minimumInteritemSpacing="5" id="tAC-pV-kZ6"> | ||
| 35 | + <size key="itemSize" width="128" height="120"/> | ||
| 36 | + <size key="headerReferenceSize" width="0.0" height="0.0"/> | ||
| 37 | + <size key="footerReferenceSize" width="0.0" height="0.0"/> | ||
| 38 | + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> | ||
| 39 | + </collectionViewFlowLayout> | ||
| 40 | + <cells/> | ||
| 41 | + <connections> | ||
| 42 | + <outlet property="dataSource" destination="KGk-i7-Jjw" id="J6c-fu-dH8"/> | ||
| 43 | + <outlet property="delegate" destination="KGk-i7-Jjw" id="D3M-nO-3sC"/> | ||
| 44 | + </connections> | ||
| 45 | + </collectionView> | ||
| 46 | + </subviews> | ||
| 47 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 48 | + <constraints> | ||
| 49 | + <constraint firstItem="Ddn-dN-xH1" firstAttribute="top" secondItem="mga-ND-qoh" secondAttribute="bottom" constant="43" id="1gh-45-u6h"/> | ||
| 50 | + <constraint firstItem="Ddn-dN-xH1" firstAttribute="leading" secondItem="1kR-zd-duR" secondAttribute="leading" id="3IU-v8-7cI"/> | ||
| 51 | + <constraint firstItem="mga-ND-qoh" firstAttribute="top" secondItem="1kR-zd-duR" secondAttribute="top" constant="26" id="J0I-v0-uwq"/> | ||
| 52 | + <constraint firstAttribute="trailing" secondItem="mga-ND-qoh" secondAttribute="trailing" constant="24" id="Ss1-zq-znd"/> | ||
| 53 | + <constraint firstAttribute="bottom" secondItem="Ddn-dN-xH1" secondAttribute="bottom" id="VdN-By-srg"/> | ||
| 54 | + <constraint firstAttribute="trailing" secondItem="Ddn-dN-xH1" secondAttribute="trailing" id="W06-Yi-lzm"/> | ||
| 55 | + <constraint firstItem="mga-ND-qoh" firstAttribute="leading" secondItem="1kR-zd-duR" secondAttribute="leading" constant="24" id="sEy-GV-Pjr"/> | ||
| 56 | + </constraints> | ||
| 57 | + </view> | ||
| 58 | + </subviews> | ||
| 59 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 60 | + <constraints> | ||
| 61 | + <constraint firstItem="1kR-zd-duR" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="BHT-r3-dcg"/> | ||
| 62 | + <constraint firstAttribute="trailing" secondItem="1kR-zd-duR" secondAttribute="trailing" id="eLa-yc-CeZ"/> | ||
| 63 | + <constraint firstAttribute="bottom" secondItem="1kR-zd-duR" secondAttribute="bottom" id="rie-jS-xMj"/> | ||
| 64 | + <constraint firstItem="1kR-zd-duR" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="vgK-SU-fRu"/> | ||
| 65 | + </constraints> | ||
| 66 | + </tableViewCellContentView> | ||
| 67 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
| 68 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 69 | + <connections> | ||
| 70 | + <outlet property="collectionView" destination="Ddn-dN-xH1" id="RzU-o5-6Dw"/> | ||
| 71 | + <outlet property="titleLabel" destination="mga-ND-qoh" id="TxL-cQ-O1P"/> | ||
| 72 | + </connections> | ||
| 73 | + <point key="canvasLocation" x="68.702290076335871" y="29.929577464788736"/> | ||
| 74 | + </tableViewCell> | ||
| 75 | + </objects> | ||
| 76 | +</document> |
| 1 | +// | ||
| 2 | +// ProfileCouponTableViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +@objc public class ProfileCouponTableViewCell: UITableViewCell { | ||
| 11 | + @IBOutlet weak var parentView: UIView! | ||
| 12 | + @IBOutlet weak var bannerImage: UIImageView! | ||
| 13 | + @IBOutlet weak var favoriteImage: UIImageView! | ||
| 14 | + @IBOutlet weak var discountView: UIView! | ||
| 15 | + @IBOutlet weak var discountLabel: UILabel! | ||
| 16 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 17 | + @IBOutlet weak var subtitleLabel: UILabel! | ||
| 18 | + @IBOutlet weak var expirationLabel: UILabel! | ||
| 19 | + @IBOutlet weak var logoImage: UIImageView! | ||
| 20 | + | ||
| 21 | + public override func awakeFromNib() { | ||
| 22 | + super.awakeFromNib() | ||
| 23 | + // Initialization code | ||
| 24 | + | ||
| 25 | + parentView.layer.borderWidth = 1.0 | ||
| 26 | + parentView.layer.borderColor = UIColor(rgb: 0xCCCCCC).cgColor | ||
| 27 | + parentView.layer.cornerRadius = 8.0 | ||
| 28 | + parentView.clipsToBounds = true | ||
| 29 | + | ||
| 30 | + discountView.layer.cornerRadius = 34.0 | ||
| 31 | + | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + func configureCell(data: OfferModel) { | ||
| 35 | + bannerImage.image = UIImage(named: data.bannerImage, in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 36 | + favoriteImage.image = UIImage(named: data.isFavorite ? "favorite_filled" : "favorite_empty", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 37 | + | ||
| 38 | + let discountSymbol = | ||
| 39 | + data.discountType == "percentage" ? "%" | ||
| 40 | + : data.discountType == "price" ? "€" | ||
| 41 | + : data.discountType == "buyOneGetOne" ? "1+1" | ||
| 42 | + : data.discountType == "free" ? "Δωρεάν" | ||
| 43 | + : "" | ||
| 44 | + | ||
| 45 | +// discountLabel.text = "\(data.discount)\(discountSymbol)" | ||
| 46 | + discountLabel.text = data.discount | ||
| 47 | + discountLabel.font = UIFont(name: "PingLCG-Bold", size: 25) | ||
| 48 | + discountLabel.textColor = UIColor(rgb: 0xF2F2F2) | ||
| 49 | + | ||
| 50 | + discountView.backgroundColor = UIColor(rgb: data.color) | ||
| 51 | + | ||
| 52 | + titleLabel.text = data.title | ||
| 53 | + titleLabel.font = UIFont(name: "PingLCG-Bold", size: 22) | ||
| 54 | + titleLabel.textColor = UIColor(rgb: 0x000F1E) | ||
| 55 | + | ||
| 56 | + subtitleLabel.text = data.description | ||
| 57 | + subtitleLabel.font = UIFont(name: "PingLCG-Regular", size: 16) | ||
| 58 | + subtitleLabel.textColor = UIColor(rgb: 0x00111B) | ||
| 59 | + | ||
| 60 | + expirationLabel.text = data.expirationDate | ||
| 61 | + expirationLabel.font = UIFont(name: "PingLCG-Regular", size: 13) | ||
| 62 | + expirationLabel.textColor = UIColor(rgb: 0x00111B) | ||
| 63 | + | ||
| 64 | + logoImage.image = UIImage(named: data.merchantLogo, in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
| 68 | + super.setSelected(selected, animated: animated) | ||
| 69 | + | ||
| 70 | + // Configure the view for the selected state | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
| 3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
| 4 | + <dependencies> | ||
| 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
| 6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
| 7 | + <capability name="System colors in document resources" minToolsVersion="11.0"/> | ||
| 8 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
| 9 | + </dependencies> | ||
| 10 | + <objects> | ||
| 11 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
| 12 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
| 13 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ProfileCouponTableViewCell" rowHeight="296" id="KGk-i7-Jjw" customClass="ProfileCouponTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 14 | + <rect key="frame" x="0.0" y="0.0" width="320" height="296"/> | ||
| 15 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
| 16 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
| 17 | + <rect key="frame" x="0.0" y="0.0" width="320" height="296"/> | ||
| 18 | + <autoresizingMask key="autoresizingMask"/> | ||
| 19 | + <subviews> | ||
| 20 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x0X-za-HZ9" userLabel="Parent View"> | ||
| 21 | + <rect key="frame" x="22" y="0.0" width="276" height="292"/> | ||
| 22 | + <subviews> | ||
| 23 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8Ht-7Z-jiW" userLabel="Top View"> | ||
| 24 | + <rect key="frame" x="0.0" y="0.0" width="276" height="171"/> | ||
| 25 | + <subviews> | ||
| 26 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="09g-Nj-HG4"> | ||
| 27 | + <rect key="frame" x="0.0" y="0.0" width="276" height="171"/> | ||
| 28 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 29 | + </imageView> | ||
| 30 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4xy-g8-Ukx" userLabel="Fav View"> | ||
| 31 | + <rect key="frame" x="16" y="13" width="46" height="46"/> | ||
| 32 | + <subviews> | ||
| 33 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="T91-Ra-dmT"> | ||
| 34 | + <rect key="frame" x="0.0" y="0.0" width="46" height="46"/> | ||
| 35 | + </imageView> | ||
| 36 | + </subviews> | ||
| 37 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 38 | + <constraints> | ||
| 39 | + <constraint firstAttribute="width" constant="46" id="Cc2-q8-pqb"/> | ||
| 40 | + <constraint firstAttribute="trailing" secondItem="T91-Ra-dmT" secondAttribute="trailing" id="FHe-DH-ghP"/> | ||
| 41 | + <constraint firstItem="T91-Ra-dmT" firstAttribute="top" secondItem="4xy-g8-Ukx" secondAttribute="top" id="HMT-10-TaU"/> | ||
| 42 | + <constraint firstAttribute="bottom" secondItem="T91-Ra-dmT" secondAttribute="bottom" id="K7M-Vf-uo8"/> | ||
| 43 | + <constraint firstItem="T91-Ra-dmT" firstAttribute="leading" secondItem="4xy-g8-Ukx" secondAttribute="leading" id="diD-2x-xIG"/> | ||
| 44 | + <constraint firstAttribute="height" constant="46" id="gtM-XV-LnS"/> | ||
| 45 | + </constraints> | ||
| 46 | + </view> | ||
| 47 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dnZ-fa-M3o" userLabel="Discount View"> | ||
| 48 | + <rect key="frame" x="179" y="14" width="84" height="84"/> | ||
| 49 | + <subviews> | ||
| 50 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XeI-PB-wG7"> | ||
| 51 | + <rect key="frame" x="5" y="31.666666666666664" width="74" height="21"/> | ||
| 52 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 53 | + <nil key="textColor"/> | ||
| 54 | + <nil key="highlightedColor"/> | ||
| 55 | + </label> | ||
| 56 | + </subviews> | ||
| 57 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 58 | + <constraints> | ||
| 59 | + <constraint firstAttribute="height" constant="84" id="8gp-O1-LgD"/> | ||
| 60 | + <constraint firstAttribute="width" constant="84" id="Mve-Yl-rsU"/> | ||
| 61 | + <constraint firstItem="XeI-PB-wG7" firstAttribute="centerY" secondItem="dnZ-fa-M3o" secondAttribute="centerY" id="Rlp-4Z-urE"/> | ||
| 62 | + <constraint firstAttribute="trailing" secondItem="XeI-PB-wG7" secondAttribute="trailing" constant="5" id="dyI-UO-uvn"/> | ||
| 63 | + <constraint firstItem="XeI-PB-wG7" firstAttribute="leading" secondItem="dnZ-fa-M3o" secondAttribute="leading" constant="5" id="eon-8Y-X7c"/> | ||
| 64 | + </constraints> | ||
| 65 | + </view> | ||
| 66 | + </subviews> | ||
| 67 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 68 | + <constraints> | ||
| 69 | + <constraint firstItem="09g-Nj-HG4" firstAttribute="leading" secondItem="8Ht-7Z-jiW" secondAttribute="leading" id="1AO-0a-ZpN"/> | ||
| 70 | + <constraint firstItem="dnZ-fa-M3o" firstAttribute="top" secondItem="8Ht-7Z-jiW" secondAttribute="top" constant="14" id="AC6-zX-rmc"/> | ||
| 71 | + <constraint firstItem="09g-Nj-HG4" firstAttribute="top" secondItem="8Ht-7Z-jiW" secondAttribute="top" id="DYc-4B-bTE"/> | ||
| 72 | + <constraint firstAttribute="bottom" secondItem="09g-Nj-HG4" secondAttribute="bottom" id="Rsg-ZQ-0bM"/> | ||
| 73 | + <constraint firstItem="4xy-g8-Ukx" firstAttribute="leading" secondItem="8Ht-7Z-jiW" secondAttribute="leading" constant="16" id="U8A-vw-Pca"/> | ||
| 74 | + <constraint firstItem="4xy-g8-Ukx" firstAttribute="top" secondItem="8Ht-7Z-jiW" secondAttribute="top" constant="13" id="ZGF-7X-iSN"/> | ||
| 75 | + <constraint firstAttribute="trailing" secondItem="09g-Nj-HG4" secondAttribute="trailing" id="qwK-yM-rD6"/> | ||
| 76 | + <constraint firstAttribute="trailing" secondItem="dnZ-fa-M3o" secondAttribute="trailing" constant="13" id="zAy-FM-iqd"/> | ||
| 77 | + </constraints> | ||
| 78 | + </view> | ||
| 79 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fZ6-8K-DXr" userLabel="Bottom View"> | ||
| 80 | + <rect key="frame" x="0.0" y="171" width="276" height="121"/> | ||
| 81 | + <subviews> | ||
| 82 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YtM-Db-ygP"> | ||
| 83 | + <rect key="frame" x="16" y="17" width="130" height="93"/> | ||
| 84 | + <subviews> | ||
| 85 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="63p-dI-yTa"> | ||
| 86 | + <rect key="frame" x="0.0" y="0.0" width="130" height="21"/> | ||
| 87 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 88 | + <nil key="textColor"/> | ||
| 89 | + <nil key="highlightedColor"/> | ||
| 90 | + </label> | ||
| 91 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z30-VZ-8h3"> | ||
| 92 | + <rect key="frame" x="0.0" y="23" width="130" height="20.333333333333329"/> | ||
| 93 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 94 | + <nil key="textColor"/> | ||
| 95 | + <nil key="highlightedColor"/> | ||
| 96 | + </label> | ||
| 97 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PZ3-qH-3XH"> | ||
| 98 | + <rect key="frame" x="0.0" y="72" width="130" height="21"/> | ||
| 99 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 100 | + <nil key="textColor"/> | ||
| 101 | + <nil key="highlightedColor"/> | ||
| 102 | + </label> | ||
| 103 | + </subviews> | ||
| 104 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 105 | + <constraints> | ||
| 106 | + <constraint firstItem="z30-VZ-8h3" firstAttribute="leading" secondItem="YtM-Db-ygP" secondAttribute="leading" id="DHf-fQ-lXA"/> | ||
| 107 | + <constraint firstAttribute="trailing" secondItem="z30-VZ-8h3" secondAttribute="trailing" id="DnI-99-e8v"/> | ||
| 108 | + <constraint firstAttribute="trailing" secondItem="PZ3-qH-3XH" secondAttribute="trailing" id="JA5-Am-dmE"/> | ||
| 109 | + <constraint firstItem="63p-dI-yTa" firstAttribute="top" secondItem="YtM-Db-ygP" secondAttribute="top" id="Kfa-m3-rWW"/> | ||
| 110 | + <constraint firstAttribute="trailing" secondItem="63p-dI-yTa" secondAttribute="trailing" id="bxa-5c-OE6"/> | ||
| 111 | + <constraint firstItem="63p-dI-yTa" firstAttribute="leading" secondItem="YtM-Db-ygP" secondAttribute="leading" id="gk1-Zr-MIl"/> | ||
| 112 | + <constraint firstItem="PZ3-qH-3XH" firstAttribute="leading" secondItem="YtM-Db-ygP" secondAttribute="leading" id="hE4-2m-iZk"/> | ||
| 113 | + <constraint firstItem="z30-VZ-8h3" firstAttribute="top" secondItem="63p-dI-yTa" secondAttribute="bottom" constant="2" id="hfr-Gi-omT"/> | ||
| 114 | + <constraint firstAttribute="bottom" secondItem="PZ3-qH-3XH" secondAttribute="bottom" id="xMs-dh-ybb"/> | ||
| 115 | + </constraints> | ||
| 116 | + </view> | ||
| 117 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="hM2-8T-4vX"> | ||
| 118 | + <rect key="frame" x="164" y="17" width="84" height="84"/> | ||
| 119 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 120 | + <constraints> | ||
| 121 | + <constraint firstAttribute="width" constant="84" id="6to-Dv-ukR"/> | ||
| 122 | + <constraint firstAttribute="height" constant="84" id="QjU-rO-Uqx"/> | ||
| 123 | + </constraints> | ||
| 124 | + </imageView> | ||
| 125 | + </subviews> | ||
| 126 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 127 | + <constraints> | ||
| 128 | + <constraint firstAttribute="bottom" secondItem="YtM-Db-ygP" secondAttribute="bottom" constant="11" id="6ul-bC-Jpj"/> | ||
| 129 | + <constraint firstItem="YtM-Db-ygP" firstAttribute="leading" secondItem="fZ6-8K-DXr" secondAttribute="leading" constant="16" id="C7J-bI-8ap"/> | ||
| 130 | + <constraint firstItem="hM2-8T-4vX" firstAttribute="top" secondItem="fZ6-8K-DXr" secondAttribute="top" constant="17" id="HBF-J2-ed0"/> | ||
| 131 | + <constraint firstItem="hM2-8T-4vX" firstAttribute="leading" secondItem="YtM-Db-ygP" secondAttribute="trailing" constant="18" id="WML-nR-cLh"/> | ||
| 132 | + <constraint firstItem="YtM-Db-ygP" firstAttribute="top" secondItem="fZ6-8K-DXr" secondAttribute="top" constant="17" id="f0H-m3-OAP"/> | ||
| 133 | + <constraint firstAttribute="trailing" secondItem="hM2-8T-4vX" secondAttribute="trailing" constant="28" id="jKa-nW-g41"/> | ||
| 134 | + <constraint firstAttribute="height" constant="121" id="ptz-uq-5rq"/> | ||
| 135 | + </constraints> | ||
| 136 | + </view> | ||
| 137 | + </subviews> | ||
| 138 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 139 | + <constraints> | ||
| 140 | + <constraint firstItem="fZ6-8K-DXr" firstAttribute="leading" secondItem="x0X-za-HZ9" secondAttribute="leading" id="DKa-9V-lma"/> | ||
| 141 | + <constraint firstAttribute="trailing" secondItem="8Ht-7Z-jiW" secondAttribute="trailing" id="LK1-Cz-JUh"/> | ||
| 142 | + <constraint firstItem="8Ht-7Z-jiW" firstAttribute="top" secondItem="x0X-za-HZ9" secondAttribute="top" id="P9v-fu-Mhs"/> | ||
| 143 | + <constraint firstAttribute="height" constant="292" id="lA6-op-vsG"/> | ||
| 144 | + <constraint firstAttribute="trailing" secondItem="fZ6-8K-DXr" secondAttribute="trailing" id="lAU-n1-MKy"/> | ||
| 145 | + <constraint firstItem="8Ht-7Z-jiW" firstAttribute="leading" secondItem="x0X-za-HZ9" secondAttribute="leading" id="sK9-Tw-Yqn"/> | ||
| 146 | + <constraint firstAttribute="bottom" secondItem="fZ6-8K-DXr" secondAttribute="bottom" id="u4z-JD-qby"/> | ||
| 147 | + <constraint firstItem="fZ6-8K-DXr" firstAttribute="top" secondItem="8Ht-7Z-jiW" secondAttribute="bottom" id="v5X-nL-hKm"/> | ||
| 148 | + </constraints> | ||
| 149 | + </view> | ||
| 150 | + </subviews> | ||
| 151 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 152 | + <constraints> | ||
| 153 | + <constraint firstItem="x0X-za-HZ9" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="22" id="SzO-Fk-ZCB"/> | ||
| 154 | + <constraint firstItem="x0X-za-HZ9" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="uQN-BA-o6w"/> | ||
| 155 | + <constraint firstAttribute="trailing" secondItem="x0X-za-HZ9" secondAttribute="trailing" constant="22" id="vi4-dI-lx3"/> | ||
| 156 | + <constraint firstAttribute="bottom" secondItem="x0X-za-HZ9" secondAttribute="bottom" id="zsL-aX-JRL"/> | ||
| 157 | + </constraints> | ||
| 158 | + </tableViewCellContentView> | ||
| 159 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
| 160 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 161 | + <connections> | ||
| 162 | + <outlet property="bannerImage" destination="09g-Nj-HG4" id="1Ux-ZI-rVQ"/> | ||
| 163 | + <outlet property="discountLabel" destination="XeI-PB-wG7" id="Kyy-aE-GgR"/> | ||
| 164 | + <outlet property="discountView" destination="dnZ-fa-M3o" id="fht-MW-ToM"/> | ||
| 165 | + <outlet property="expirationLabel" destination="PZ3-qH-3XH" id="vIb-60-EVp"/> | ||
| 166 | + <outlet property="favoriteImage" destination="T91-Ra-dmT" id="leZ-Tz-zo8"/> | ||
| 167 | + <outlet property="logoImage" destination="hM2-8T-4vX" id="Zqv-yp-lrD"/> | ||
| 168 | + <outlet property="parentView" destination="x0X-za-HZ9" id="OE0-tT-IPd"/> | ||
| 169 | + <outlet property="subtitleLabel" destination="z30-VZ-8h3" id="s40-MP-4Jn"/> | ||
| 170 | + <outlet property="titleLabel" destination="63p-dI-yTa" id="YOe-I2-Cly"/> | ||
| 171 | + </connections> | ||
| 172 | + <point key="canvasLocation" x="68.702290076335871" y="77.464788732394368"/> | ||
| 173 | + </tableViewCell> | ||
| 174 | + </objects> | ||
| 175 | + <resources> | ||
| 176 | + <systemColor name="systemBackgroundColor"> | ||
| 177 | + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 178 | + </systemColor> | ||
| 179 | + </resources> | ||
| 180 | +</document> |
| 1 | +// | ||
| 2 | +// ProfileFilterCollectionViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +@objc public class ProfileFilterCollectionViewCell: UICollectionViewCell { | ||
| 11 | + @IBOutlet weak var parentView: UIView! | ||
| 12 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 13 | + | ||
| 14 | + public override func awakeFromNib() { | ||
| 15 | + super.awakeFromNib() | ||
| 16 | + // Initialization code | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + func configureCell(data: CouponFilterModel, isSelected: Bool) { | ||
| 20 | + if (isSelected) { | ||
| 21 | + parentView.backgroundColor = UIColor(rgb: 0x000F1E) | ||
| 22 | + parentView.layer.cornerRadius = 4.0 | ||
| 23 | + | ||
| 24 | + titleLabel.font = UIFont(name: "PingLCG-Bold", size: 16) | ||
| 25 | + titleLabel.textColor = UIColor(rgb: 0xFFFFFF) | ||
| 26 | + | ||
| 27 | + } else { | ||
| 28 | + parentView.backgroundColor = .clear | ||
| 29 | + parentView.layer.borderWidth = 2 | ||
| 30 | + parentView.layer.borderColor = UIColor(rgb: 0x56586A).cgColor | ||
| 31 | + parentView.layer.cornerRadius = 4.0 | ||
| 32 | + | ||
| 33 | + titleLabel.font = UIFont(name: "PingLCG-Bold", size: 16) | ||
| 34 | + titleLabel.textColor = UIColor(rgb: 0xFFFFFF) | ||
| 35 | + } | ||
| 36 | + titleLabel.text = data.title | ||
| 37 | + } | ||
| 38 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
| 3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
| 4 | + <dependencies> | ||
| 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
| 6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
| 7 | + <capability name="System colors in document resources" minToolsVersion="11.0"/> | ||
| 8 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
| 9 | + </dependencies> | ||
| 10 | + <objects> | ||
| 11 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
| 12 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
| 13 | + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ProfileFilterCollectionViewCell" id="gTV-IL-0wX" customClass="ProfileFilterCollectionViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 14 | + <rect key="frame" x="0.0" y="0.0" width="145" height="66"/> | ||
| 15 | + <autoresizingMask key="autoresizingMask"/> | ||
| 16 | + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> | ||
| 17 | + <rect key="frame" x="0.0" y="0.0" width="145" height="66"/> | ||
| 18 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
| 19 | + <subviews> | ||
| 20 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NgU-Qp-M8l" userLabel="ParentView"> | ||
| 21 | + <rect key="frame" x="0.0" y="0.0" width="145" height="66"/> | ||
| 22 | + <subviews> | ||
| 23 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xq0-AN-QT6"> | ||
| 24 | + <rect key="frame" x="17" y="12" width="111" height="42"/> | ||
| 25 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 26 | + <nil key="textColor"/> | ||
| 27 | + <nil key="highlightedColor"/> | ||
| 28 | + </label> | ||
| 29 | + </subviews> | ||
| 30 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 31 | + <constraints> | ||
| 32 | + <constraint firstItem="Xq0-AN-QT6" firstAttribute="top" secondItem="NgU-Qp-M8l" secondAttribute="top" constant="12" id="Nro-8v-U0C"/> | ||
| 33 | + <constraint firstAttribute="trailing" secondItem="Xq0-AN-QT6" secondAttribute="trailing" constant="17" id="hKh-jv-VQR"/> | ||
| 34 | + <constraint firstItem="Xq0-AN-QT6" firstAttribute="leading" secondItem="NgU-Qp-M8l" secondAttribute="leading" constant="17" id="na6-tV-KQZ"/> | ||
| 35 | + <constraint firstAttribute="bottom" secondItem="Xq0-AN-QT6" secondAttribute="bottom" constant="12" id="pJO-74-XZO"/> | ||
| 36 | + </constraints> | ||
| 37 | + </view> | ||
| 38 | + </subviews> | ||
| 39 | + </view> | ||
| 40 | + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> | ||
| 41 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 42 | + <constraints> | ||
| 43 | + <constraint firstItem="NgU-Qp-M8l" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="RYQ-Qn-MSN"/> | ||
| 44 | + <constraint firstAttribute="trailing" secondItem="NgU-Qp-M8l" secondAttribute="trailing" id="efv-x1-lhD"/> | ||
| 45 | + <constraint firstItem="NgU-Qp-M8l" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="l7p-or-kC2"/> | ||
| 46 | + <constraint firstAttribute="bottom" secondItem="NgU-Qp-M8l" secondAttribute="bottom" id="te6-Qr-T6c"/> | ||
| 47 | + </constraints> | ||
| 48 | + <size key="customSize" width="145" height="66"/> | ||
| 49 | + <connections> | ||
| 50 | + <outlet property="parentView" destination="NgU-Qp-M8l" id="qhP-z2-cWY"/> | ||
| 51 | + <outlet property="titleLabel" destination="Xq0-AN-QT6" id="Hft-IP-ITh"/> | ||
| 52 | + </connections> | ||
| 53 | + <point key="canvasLocation" x="109.16030534351144" y="-5.6338028169014089"/> | ||
| 54 | + </collectionViewCell> | ||
| 55 | + </objects> | ||
| 56 | + <resources> | ||
| 57 | + <systemColor name="systemBackgroundColor"> | ||
| 58 | + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 59 | + </systemColor> | ||
| 60 | + </resources> | ||
| 61 | +</document> |
| 1 | +// | ||
| 2 | +// ProfileHeaderTableViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +@objc public class ProfileHeaderTableViewCell: UITableViewCell { | ||
| 11 | + @IBOutlet weak var tagView1: UIView! | ||
| 12 | + @IBOutlet weak var tagLabel1: UILabel! | ||
| 13 | + @IBOutlet weak var tagView2: UIView! | ||
| 14 | + @IBOutlet weak var tagLabel2: UILabel! | ||
| 15 | + @IBOutlet weak var profileImage: UIImageView! | ||
| 16 | + | ||
| 17 | + public override func awakeFromNib() { | ||
| 18 | + super.awakeFromNib() | ||
| 19 | + | ||
| 20 | + profileImage.image = UIImage(named: "profile_pic_default", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 21 | + | ||
| 22 | + tagView1.backgroundColor = UIColor(rgb: 0x09914E) | ||
| 23 | + tagView1.layer.cornerRadius = 4.0 | ||
| 24 | + tagLabel1.font = UIFont(name: "PingLCG-Regular", size: 17) | ||
| 25 | + tagLabel1.textColor = UIColor(rgb: 0xFFFFFF) | ||
| 26 | + | ||
| 27 | + tagView2.backgroundColor = UIColor(rgb: 0xFC9F25) | ||
| 28 | + tagView2.layer.cornerRadius = 4.0 | ||
| 29 | + tagLabel2.font = UIFont(name: "PingLCG-Regular", size: 17) | ||
| 30 | + tagLabel2.textColor = UIColor(rgb: 0xFFFFFF) | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
| 34 | + super.setSelected(selected, animated: animated) | ||
| 35 | + | ||
| 36 | + // Configure the view for the selected state | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
| 3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
| 4 | + <dependencies> | ||
| 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
| 6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
| 7 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
| 8 | + </dependencies> | ||
| 9 | + <objects> | ||
| 10 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
| 11 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
| 12 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ProfileHeaderTableViewCell" id="KGk-i7-Jjw" customClass="ProfileHeaderTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 13 | + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> | ||
| 14 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
| 15 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
| 16 | + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> | ||
| 17 | + <autoresizingMask key="autoresizingMask"/> | ||
| 18 | + <subviews> | ||
| 19 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EZC-E7-4NP" userLabel="Parent View"> | ||
| 20 | + <rect key="frame" x="31" y="0.0" width="258" height="43"/> | ||
| 21 | + <subviews> | ||
| 22 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PbJ-yt-Kn6"> | ||
| 23 | + <rect key="frame" x="0.0" y="8.6666666666666643" width="58" height="26"/> | ||
| 24 | + <subviews> | ||
| 25 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Green" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3iK-77-YPt"> | ||
| 26 | + <rect key="frame" x="6" y="3" width="46" height="20"/> | ||
| 27 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 28 | + <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/> | ||
| 29 | + <nil key="textColor"/> | ||
| 30 | + <nil key="highlightedColor"/> | ||
| 31 | + </label> | ||
| 32 | + </subviews> | ||
| 33 | + <color key="backgroundColor" red="0.035294117649999998" green="0.56862745100000001" blue="0.30588235289999999" alpha="1" colorSpace="calibratedRGB"/> | ||
| 34 | + <constraints> | ||
| 35 | + <constraint firstAttribute="bottom" secondItem="3iK-77-YPt" secondAttribute="bottom" constant="3" id="AzT-L8-M11"/> | ||
| 36 | + <constraint firstItem="3iK-77-YPt" firstAttribute="leading" secondItem="PbJ-yt-Kn6" secondAttribute="leading" constant="6" id="CXA-8o-8hw"/> | ||
| 37 | + <constraint firstItem="3iK-77-YPt" firstAttribute="top" secondItem="PbJ-yt-Kn6" secondAttribute="top" constant="3" id="HgB-cm-GWV"/> | ||
| 38 | + <constraint firstAttribute="trailing" secondItem="3iK-77-YPt" secondAttribute="trailing" constant="6" id="kcr-Fy-V25"/> | ||
| 39 | + </constraints> | ||
| 40 | + </view> | ||
| 41 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BIN-Ee-QVw"> | ||
| 42 | + <rect key="frame" x="66" y="8.6666666666666643" width="61.666666666666657" height="26"/> | ||
| 43 | + <subviews> | ||
| 44 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Family" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RrC-Qf-9bC"> | ||
| 45 | + <rect key="frame" x="6" y="3" width="49.666666666666664" height="20"/> | ||
| 46 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 47 | + <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/> | ||
| 48 | + <nil key="textColor"/> | ||
| 49 | + <nil key="highlightedColor"/> | ||
| 50 | + </label> | ||
| 51 | + </subviews> | ||
| 52 | + <color key="backgroundColor" red="0.98823529409999999" green="0.62352941179999999" blue="0.1450980392" alpha="1" colorSpace="calibratedRGB"/> | ||
| 53 | + <constraints> | ||
| 54 | + <constraint firstItem="RrC-Qf-9bC" firstAttribute="top" secondItem="BIN-Ee-QVw" secondAttribute="top" constant="3" id="GPN-tb-Pfo"/> | ||
| 55 | + <constraint firstItem="RrC-Qf-9bC" firstAttribute="leading" secondItem="BIN-Ee-QVw" secondAttribute="leading" constant="6" id="NbB-AF-IA0"/> | ||
| 56 | + <constraint firstAttribute="bottom" secondItem="RrC-Qf-9bC" secondAttribute="bottom" constant="3" id="PLN-Gb-IUu"/> | ||
| 57 | + <constraint firstAttribute="trailing" secondItem="RrC-Qf-9bC" secondAttribute="trailing" constant="6" id="pdI-Ll-nUY"/> | ||
| 58 | + </constraints> | ||
| 59 | + </view> | ||
| 60 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oRt-jB-UR1"> | ||
| 61 | + <rect key="frame" x="221" y="0.0" width="37" height="43"/> | ||
| 62 | + <subviews> | ||
| 63 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ka7-9X-7t4"> | ||
| 64 | + <rect key="frame" x="0.0" y="0.0" width="37" height="37"/> | ||
| 65 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 66 | + <constraints> | ||
| 67 | + <constraint firstAttribute="width" constant="37" id="l80-J9-yl7"/> | ||
| 68 | + <constraint firstAttribute="height" constant="37" id="td4-wH-CiD"/> | ||
| 69 | + </constraints> | ||
| 70 | + </imageView> | ||
| 71 | + </subviews> | ||
| 72 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 73 | + <constraints> | ||
| 74 | + <constraint firstAttribute="bottom" secondItem="ka7-9X-7t4" secondAttribute="bottom" id="0YM-ws-0Dg"/> | ||
| 75 | + <constraint firstItem="ka7-9X-7t4" firstAttribute="top" secondItem="oRt-jB-UR1" secondAttribute="top" id="r2H-hN-E5S"/> | ||
| 76 | + <constraint firstAttribute="trailing" secondItem="ka7-9X-7t4" secondAttribute="trailing" id="tGk-Nv-WzC"/> | ||
| 77 | + <constraint firstItem="ka7-9X-7t4" firstAttribute="leading" secondItem="oRt-jB-UR1" secondAttribute="leading" id="te7-Gw-oyL"/> | ||
| 78 | + </constraints> | ||
| 79 | + </view> | ||
| 80 | + </subviews> | ||
| 81 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 82 | + <constraints> | ||
| 83 | + <constraint firstItem="oRt-jB-UR1" firstAttribute="top" secondItem="EZC-E7-4NP" secondAttribute="top" id="AEJ-YC-aVw"/> | ||
| 84 | + <constraint firstItem="PbJ-yt-Kn6" firstAttribute="leading" secondItem="EZC-E7-4NP" secondAttribute="leading" id="Afn-AJ-Tfk"/> | ||
| 85 | + <constraint firstItem="PbJ-yt-Kn6" firstAttribute="centerY" secondItem="EZC-E7-4NP" secondAttribute="centerY" id="fC0-9G-Ajq"/> | ||
| 86 | + <constraint firstAttribute="bottom" secondItem="oRt-jB-UR1" secondAttribute="bottom" id="mvy-dD-Q26"/> | ||
| 87 | + <constraint firstAttribute="trailing" secondItem="oRt-jB-UR1" secondAttribute="trailing" id="nAT-Wu-pvL"/> | ||
| 88 | + <constraint firstItem="oRt-jB-UR1" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="BIN-Ee-QVw" secondAttribute="trailing" constant="8" id="ohN-Bc-zfQ"/> | ||
| 89 | + <constraint firstItem="BIN-Ee-QVw" firstAttribute="centerY" secondItem="EZC-E7-4NP" secondAttribute="centerY" id="q7G-9L-LXt"/> | ||
| 90 | + <constraint firstItem="BIN-Ee-QVw" firstAttribute="leading" secondItem="PbJ-yt-Kn6" secondAttribute="trailing" constant="8" id="yPy-YQ-6bl"/> | ||
| 91 | + </constraints> | ||
| 92 | + </view> | ||
| 93 | + </subviews> | ||
| 94 | + <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/> | ||
| 95 | + <constraints> | ||
| 96 | + <constraint firstItem="EZC-E7-4NP" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="31" id="5YW-dG-HjU"/> | ||
| 97 | + <constraint firstAttribute="trailing" secondItem="EZC-E7-4NP" secondAttribute="trailing" constant="31" id="6BI-8F-Fsl"/> | ||
| 98 | + <constraint firstAttribute="bottom" secondItem="EZC-E7-4NP" secondAttribute="bottom" id="spA-yG-SaN"/> | ||
| 99 | + <constraint firstItem="EZC-E7-4NP" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="27" id="zUZ-e2-jYJ"/> | ||
| 100 | + </constraints> | ||
| 101 | + </tableViewCellContentView> | ||
| 102 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
| 103 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 104 | + <connections> | ||
| 105 | + <outlet property="profileImage" destination="ka7-9X-7t4" id="ejB-Ra-63T"/> | ||
| 106 | + <outlet property="tagLabel1" destination="3iK-77-YPt" id="q1E-7d-qjF"/> | ||
| 107 | + <outlet property="tagLabel2" destination="RrC-Qf-9bC" id="5Vq-uh-qaL"/> | ||
| 108 | + <outlet property="tagView1" destination="PbJ-yt-Kn6" id="kCL-Ll-U6s"/> | ||
| 109 | + <outlet property="tagView2" destination="BIN-Ee-QVw" id="fkF-yO-znw"/> | ||
| 110 | + </connections> | ||
| 111 | + <point key="canvasLocation" x="70" y="-11"/> | ||
| 112 | + </tableViewCell> | ||
| 113 | + </objects> | ||
| 114 | +</document> |
| 1 | +// | ||
| 2 | +// ProfileQuestionnaireTableViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +@objc public class ProfileQuestionnaireTableViewCell: UITableViewCell { | ||
| 11 | + @IBOutlet weak var questionnaireBannerImage: UIImageView! | ||
| 12 | + | ||
| 13 | + public override func awakeFromNib() { | ||
| 14 | + super.awakeFromNib() | ||
| 15 | + | ||
| 16 | + questionnaireBannerImage.image = UIImage(named: "questionnaire_banner", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 17 | + | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
| 21 | + super.setSelected(selected, animated: animated) | ||
| 22 | + | ||
| 23 | + // Configure the view for the selected state | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
| 3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
| 4 | + <dependencies> | ||
| 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
| 6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
| 7 | + <capability name="System colors in document resources" minToolsVersion="11.0"/> | ||
| 8 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
| 9 | + </dependencies> | ||
| 10 | + <objects> | ||
| 11 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
| 12 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
| 13 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ProfileQuestionnaireTableViewCell" rowHeight="211" id="KGk-i7-Jjw" customClass="ProfileQuestionnaireTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 14 | + <rect key="frame" x="0.0" y="0.0" width="320" height="211"/> | ||
| 15 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
| 16 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
| 17 | + <rect key="frame" x="0.0" y="0.0" width="320" height="211"/> | ||
| 18 | + <autoresizingMask key="autoresizingMask"/> | ||
| 19 | + <subviews> | ||
| 20 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YrO-k4-v2O" userLabel="ParentView"> | ||
| 21 | + <rect key="frame" x="24" y="35" width="272" height="9"/> | ||
| 22 | + <subviews> | ||
| 23 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="N8L-PD-UP8"> | ||
| 24 | + <rect key="frame" x="0.0" y="0.0" width="272" height="159"/> | ||
| 25 | + <color key="backgroundColor" systemColor="systemRedColor"/> | ||
| 26 | + <constraints> | ||
| 27 | + <constraint firstAttribute="height" constant="159" id="r1F-lV-yNf"/> | ||
| 28 | + </constraints> | ||
| 29 | + </imageView> | ||
| 30 | + </subviews> | ||
| 31 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 32 | + <constraints> | ||
| 33 | + <constraint firstItem="N8L-PD-UP8" firstAttribute="leading" secondItem="YrO-k4-v2O" secondAttribute="leading" id="Ay6-kG-U8L"/> | ||
| 34 | + <constraint firstAttribute="bottom" secondItem="N8L-PD-UP8" secondAttribute="bottom" id="S87-T5-YdQ"/> | ||
| 35 | + <constraint firstAttribute="trailing" secondItem="N8L-PD-UP8" secondAttribute="trailing" id="WGt-wu-sFI"/> | ||
| 36 | + <constraint firstItem="N8L-PD-UP8" firstAttribute="top" secondItem="YrO-k4-v2O" secondAttribute="top" id="ZxG-A7-Zci"/> | ||
| 37 | + </constraints> | ||
| 38 | + </view> | ||
| 39 | + </subviews> | ||
| 40 | + <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/> | ||
| 41 | + <constraints> | ||
| 42 | + <constraint firstAttribute="bottom" secondItem="YrO-k4-v2O" secondAttribute="bottom" id="6we-5l-yeL"/> | ||
| 43 | + <constraint firstAttribute="trailing" secondItem="YrO-k4-v2O" secondAttribute="trailing" constant="24" id="7CD-5N-Kwy"/> | ||
| 44 | + <constraint firstItem="YrO-k4-v2O" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="24" id="ExZ-x2-yiF"/> | ||
| 45 | + <constraint firstItem="YrO-k4-v2O" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="35" id="iID-80-Men"/> | ||
| 46 | + </constraints> | ||
| 47 | + </tableViewCellContentView> | ||
| 48 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
| 49 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 50 | + <connections> | ||
| 51 | + <outlet property="questionnaireBannerImage" destination="N8L-PD-UP8" id="BMn-6A-UVw"/> | ||
| 52 | + </connections> | ||
| 53 | + <point key="canvasLocation" x="68.702290076335871" y="47.535211267605639"/> | ||
| 54 | + </tableViewCell> | ||
| 55 | + </objects> | ||
| 56 | + <resources> | ||
| 57 | + <systemColor name="systemRedColor"> | ||
| 58 | + <color red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
| 59 | + </systemColor> | ||
| 60 | + </resources> | ||
| 61 | +</document> |
| 1 | +// | ||
| 2 | +// Models.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 29/5/25. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | + | ||
| 9 | +struct SectionModel { | ||
| 10 | + let title: String | ||
| 11 | + let count: Int | ||
| 12 | + let offers: [OfferModel] | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +struct OfferModel { | ||
| 16 | + let category: String | ||
| 17 | + let title: String | ||
| 18 | + let description: String | ||
| 19 | + let discount: String | ||
| 20 | + let discountType: String // e.g., "price", "percentage", "free", "buyOneGetOne", etc. | ||
| 21 | + let bannerImage: String | ||
| 22 | + let merchantLogo: String | ||
| 23 | + let expirationDate: String | ||
| 24 | + let color: UInt | ||
| 25 | + var isFavorite: Bool | ||
| 26 | + var active: Bool? | ||
| 27 | + var redeemed: Bool? | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +struct CouponFilterModel { | ||
| 31 | + let title: String | ||
| 32 | +} |
| ... | @@ -7,24 +7,6 @@ | ... | @@ -7,24 +7,6 @@ |
| 7 | 7 | ||
| 8 | import UIKit | 8 | import UIKit |
| 9 | 9 | ||
| 10 | -struct SectionModel { | ||
| 11 | - let title: String | ||
| 12 | - let count: Int | ||
| 13 | - let offers: [OfferModel] | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -struct OfferModel { | ||
| 17 | - let category: String | ||
| 18 | - let title: String | ||
| 19 | - let description: String | ||
| 20 | - let discount: String | ||
| 21 | - let discountType: String // e.g., "price", "percentage", "free", "buyOneGetOne", etc. | ||
| 22 | - let bannerImage: String | ||
| 23 | - let merchantLogo: String | ||
| 24 | - let expirationDate: String | ||
| 25 | - let color: UInt | ||
| 26 | - var isFavorite: Bool | ||
| 27 | -} | ||
| 28 | 10 | ||
| 29 | @objc public class MyRewardsViewController: UIViewController { | 11 | @objc public class MyRewardsViewController: UIViewController { |
| 30 | @IBOutlet weak var tableView: UITableView! | 12 | @IBOutlet weak var tableView: UITableView! |
| ... | @@ -80,18 +62,6 @@ struct OfferModel { | ... | @@ -80,18 +62,6 @@ struct OfferModel { |
| 80 | color: 0x8A2BE2, | 62 | color: 0x8A2BE2, |
| 81 | isFavorite: false | 63 | isFavorite: false |
| 82 | ), | 64 | ), |
| 83 | - OfferModel( | ||
| 84 | - category: "Διαγωνισμός", | ||
| 85 | - title: "Διαγωνισμός Κού-πονς!", | ||
| 86 | - description: "13 Απίθανα ΔΩΡΑ σε περιμένουν!", | ||
| 87 | - discount: "", | ||
| 88 | - discountType: "contest", | ||
| 89 | - bannerImage: "contest_banner_5", | ||
| 90 | - merchantLogo: "contest_logo", | ||
| 91 | - expirationDate: "30/06/2025", | ||
| 92 | - color: 0x8A2BE2, | ||
| 93 | - isFavorite: false | ||
| 94 | - ), | ||
| 95 | // Top offers | 65 | // Top offers |
| 96 | OfferModel( | 66 | OfferModel( |
| 97 | category: "Top offers", | 67 | category: "Top offers", |
| ... | @@ -301,6 +271,13 @@ struct OfferModel { | ... | @@ -301,6 +271,13 @@ struct OfferModel { |
| 301 | ) | 271 | ) |
| 302 | ] | 272 | ] |
| 303 | 273 | ||
| 274 | + let contestUrls: [String] = [ | ||
| 275 | + "https://warply.s3.amazonaws.com/dei/campaigns/tesla_dev/index.html", | ||
| 276 | + "https://warply.s3.amazonaws.com/dei/campaigns/EnergySaverContest_dev/index.html", | ||
| 277 | + "https://warply.s3.amazonaws.com/dei/campaigns/match_dev/index.html", | ||
| 278 | + "https://warply.s3.amazonaws.com/dei/campaigns/questionnaire_dev" | ||
| 279 | + ] | ||
| 280 | + | ||
| 304 | var bannerOffersSection: SectionModel? | 281 | var bannerOffersSection: SectionModel? |
| 305 | var topOffersSection: SectionModel? | 282 | var topOffersSection: SectionModel? |
| 306 | var favoriteOffersSection: SectionModel? | 283 | var favoriteOffersSection: SectionModel? |
| ... | @@ -423,23 +400,30 @@ struct OfferModel { | ... | @@ -423,23 +400,30 @@ struct OfferModel { |
| 423 | self.tableView.reloadData() | 400 | self.tableView.reloadData() |
| 424 | } | 401 | } |
| 425 | 402 | ||
| 426 | - private func openCampaignViewController(with offer: OfferModel) { | 403 | + private func openCampaignViewController(with index: Int) { |
| 427 | 404 | ||
| 428 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | 405 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) |
| 429 | if let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as? SwiftWarplyFramework.CampaignViewController { | 406 | if let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as? SwiftWarplyFramework.CampaignViewController { |
| 430 | - vc.campaignUrl = "https://warply.s3.amazonaws.com/dei/campaigns/DehEasterContest_stage/index.html" | 407 | +// vc.campaignUrl = "https://warply.s3.amazonaws.com/dei/campaigns/DehEasterContest_stage/index.html" |
| 408 | + vc.campaignUrl = contestUrls[index] | ||
| 431 | vc.showHeader = true | 409 | vc.showHeader = true |
| 432 | self.navigationController?.pushViewController(vc, animated: true) | 410 | self.navigationController?.pushViewController(vc, animated: true) |
| 433 | // self.present(vc, animated: true) | 411 | // self.present(vc, animated: true) |
| 434 | } | 412 | } |
| 435 | } | 413 | } |
| 436 | - | 414 | + |
| 437 | private func openCouponViewController(with offer: OfferModel) { | 415 | private func openCouponViewController(with offer: OfferModel) { |
| 438 | let vc = SwiftWarplyFramework.CouponViewController(nibName: "CouponViewController", bundle: Bundle(for: MyEmptyClass.self)) | 416 | let vc = SwiftWarplyFramework.CouponViewController(nibName: "CouponViewController", bundle: Bundle(for: MyEmptyClass.self)) |
| 439 | vc.coupon = offer | 417 | vc.coupon = offer |
| 440 | 418 | ||
| 441 | self.navigationController?.pushViewController(vc, animated: true) | 419 | self.navigationController?.pushViewController(vc, animated: true) |
| 442 | } | 420 | } |
| 421 | + | ||
| 422 | + private func openProfileViewController() { | ||
| 423 | + let vc = SwiftWarplyFramework.ProfileViewController(nibName: "ProfileViewController", bundle: Bundle(for: MyEmptyClass.self)) | ||
| 424 | + | ||
| 425 | + self.navigationController?.pushViewController(vc, animated: true) | ||
| 426 | + } | ||
| 443 | } | 427 | } |
| 444 | 428 | ||
| 445 | // MARK: - TableView | 429 | // MARK: - TableView |
| ... | @@ -536,9 +520,14 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -536,9 +520,14 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
| 536 | 520 | ||
| 537 | // Add delegate conformance | 521 | // Add delegate conformance |
| 538 | extension MyRewardsViewController: MyRewardsBannerOffersScrollTableViewCellDelegate { | 522 | extension MyRewardsViewController: MyRewardsBannerOffersScrollTableViewCellDelegate { |
| 539 | - func didSelectBannerOffer(_ offer: OfferModel) { | 523 | + func didSelectBannerOffer(_ index: Int) { |
| 540 | // Navigate to CampaignViewController | 524 | // Navigate to CampaignViewController |
| 541 | - openCampaignViewController(with: offer) | 525 | + openCampaignViewController(with: index) |
| 526 | + } | ||
| 527 | + | ||
| 528 | + func didTapProfileButton() { | ||
| 529 | + // Navigate to ProfileViewController | ||
| 530 | + openProfileViewController() | ||
| 542 | } | 531 | } |
| 543 | } | 532 | } |
| 544 | 533 | ... | ... |
| ... | @@ -171,6 +171,14 @@ import UIKit | ... | @@ -171,6 +171,14 @@ import UIKit |
| 171 | redeemed: true | 171 | redeemed: true |
| 172 | ) | 172 | ) |
| 173 | ] | 173 | ] |
| 174 | + | ||
| 175 | + let couponFilters: [CouponFilterModel] = [ | ||
| 176 | + CouponFilterModel(title: "Ενεργά"), | ||
| 177 | + CouponFilterModel(title: "Αγαπημένα"), | ||
| 178 | + CouponFilterModel(title: "Εξαργυρωμένα") | ||
| 179 | + ] | ||
| 180 | + | ||
| 181 | + var couponFilterSelected: CouponFilterModel = CouponFilterModel(title: "Ενεργά") | ||
| 174 | 182 | ||
| 175 | var forYouOffersSection: SectionModel? | 183 | var forYouOffersSection: SectionModel? |
| 176 | var activeOffersSection: SectionModel? | 184 | var activeOffersSection: SectionModel? |
| ... | @@ -187,8 +195,11 @@ import UIKit | ... | @@ -187,8 +195,11 @@ import UIKit |
| 187 | setNavigationTitle("Το προφίλ μου") | 195 | setNavigationTitle("Το προφίλ μου") |
| 188 | 196 | ||
| 189 | // Register XIBs for table view cells | 197 | // Register XIBs for table view cells |
| 190 | - // tableView.register(UINib(nibName: "MyRewardsBannerOffersScrollTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "MyRewardsBannerOffersScrollTableViewCell") | 198 | + tableView.register(UINib(nibName: "ProfileHeaderTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "ProfileHeaderTableViewCell") |
| 191 | - // tableView.register(UINib(nibName: "MyRewardsOffersScrollTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "MyRewardsOffersScrollTableViewCell") | 199 | + tableView.register(UINib(nibName: "ProfileQuestionnaireTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "ProfileQuestionnaireTableViewCell") |
| 200 | + tableView.register(UINib(nibName: "MyRewardsOffersScrollTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "MyRewardsOffersScrollTableViewCell") | ||
| 201 | + tableView.register(UINib(nibName: "ProfileCouponFiltersTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "ProfileCouponFiltersTableViewCell") | ||
| 202 | + tableView.register(UINib(nibName: "ProfileCouponTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "ProfileCouponTableViewCell") | ||
| 192 | 203 | ||
| 193 | // Set up table view | 204 | // Set up table view |
| 194 | tableView.delegate = self | 205 | tableView.delegate = self |
| ... | @@ -211,12 +222,14 @@ import UIKit | ... | @@ -211,12 +222,14 @@ import UIKit |
| 211 | ) | 222 | ) |
| 212 | 223 | ||
| 213 | // Favorite Offers | 224 | // Favorite Offers |
| 214 | - let activeOffers = allOffers.filter { $0.active } | 225 | + let activeOffers = allOffers.filter { $0.active ?? false } |
| 215 | activeOffersSection = SectionModel( | 226 | activeOffersSection = SectionModel( |
| 216 | title: "Ενεργά", | 227 | title: "Ενεργά", |
| 217 | count: activeOffers.count, | 228 | count: activeOffers.count, |
| 218 | offers: activeOffers | 229 | offers: activeOffers |
| 219 | ) | 230 | ) |
| 231 | + | ||
| 232 | + filteredOffersSection = activeOffersSection | ||
| 220 | 233 | ||
| 221 | // Favorite Offers | 234 | // Favorite Offers |
| 222 | let favoriteOffers = allOffers.filter { $0.isFavorite } | 235 | let favoriteOffers = allOffers.filter { $0.isFavorite } |
| ... | @@ -227,7 +240,7 @@ import UIKit | ... | @@ -227,7 +240,7 @@ import UIKit |
| 227 | ) | 240 | ) |
| 228 | 241 | ||
| 229 | // Favorite Offers | 242 | // Favorite Offers |
| 230 | - let redeemedOffers = allOffers.filter { $0.redeemed } | 243 | + let redeemedOffers = allOffers.filter { $0.redeemed ?? false } |
| 231 | redeemedOffersSection = SectionModel( | 244 | redeemedOffersSection = SectionModel( |
| 232 | title: "Αγαπημένα", | 245 | title: "Αγαπημένα", |
| 233 | count: redeemedOffers.count, | 246 | count: redeemedOffers.count, |
| ... | @@ -236,13 +249,20 @@ import UIKit | ... | @@ -236,13 +249,20 @@ import UIKit |
| 236 | 249 | ||
| 237 | self.tableView.reloadData() | 250 | self.tableView.reloadData() |
| 238 | } | 251 | } |
| 252 | + | ||
| 253 | + private func openCouponViewController(with offer: OfferModel) { | ||
| 254 | + let vc = SwiftWarplyFramework.CouponViewController(nibName: "CouponViewController", bundle: Bundle(for: MyEmptyClass.self)) | ||
| 255 | + vc.coupon = offer | ||
| 256 | + | ||
| 257 | + self.navigationController?.pushViewController(vc, animated: true) | ||
| 258 | + } | ||
| 239 | } | 259 | } |
| 240 | 260 | ||
| 241 | // MARK: - TableView | 261 | // MARK: - TableView |
| 242 | -extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | 262 | +extension ProfileViewController: UITableViewDelegate, UITableViewDataSource { |
| 243 | 263 | ||
| 244 | public func numberOfSections(in tableView: UITableView) -> Int { | 264 | public func numberOfSections(in tableView: UITableView) -> Int { |
| 245 | - return 4 + filteredOffersSection.offers.count | 265 | + return 4 + (filteredOffersSection?.offers.count ?? 0) |
| 246 | } | 266 | } |
| 247 | 267 | ||
| 248 | public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | 268 | public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| ... | @@ -272,35 +292,37 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -272,35 +292,37 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
| 272 | 292 | ||
| 273 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | 293 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| 274 | if (indexPath.section == 0) { | 294 | if (indexPath.section == 0) { |
| 275 | - let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell | 295 | + let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileHeaderTableViewCell", for: indexPath) as! ProfileHeaderTableViewCell |
| 276 | - cell.delegate = self // Set the banner offers delegate | 296 | +// cell.delegate = self // Set the banner offers delegate |
| 277 | - cell.configureCell(data: self.bannerOffersSection) | 297 | +// cell.configureCell(data: self.bannerOffersSection) |
| 278 | // cell.parent = self | 298 | // cell.parent = self |
| 279 | return cell | 299 | return cell |
| 280 | 300 | ||
| 281 | - } else { | 301 | + } else if (indexPath.section == 1) { |
| 302 | + let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileQuestionnaireTableViewCell", for: indexPath) as! ProfileQuestionnaireTableViewCell | ||
| 303 | + return cell | ||
| 304 | + | ||
| 305 | + } else if (indexPath.section == 2) { | ||
| 282 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsOffersScrollTableViewCell", for: indexPath) as! MyRewardsOffersScrollTableViewCell | 306 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsOffersScrollTableViewCell", for: indexPath) as! MyRewardsOffersScrollTableViewCell |
| 283 | 307 | ||
| 284 | cell.delegate = self // Set the offers delegate | 308 | cell.delegate = self // Set the offers delegate |
| 309 | + cell.configureCell(data: self.forYouOffersSection) | ||
| 285 | 310 | ||
| 286 | - if (indexPath.section == 1) { | 311 | + return cell |
| 287 | - cell.configureCell(data: self.topOffersSection) | ||
| 288 | - } else if (indexPath.section == 2) { | ||
| 289 | - cell.configureCell(data: self.favoriteOffersSection) | ||
| 290 | - } else if (indexPath.section == 3) { | ||
| 291 | - cell.configureCell(data: self.sustainableOffersSection) | ||
| 292 | - } else if (indexPath.section == 4) { | ||
| 293 | - cell.configureCell(data: self.familyOffersSection) | ||
| 294 | - } else if (indexPath.section == 5) { | ||
| 295 | - cell.configureCell(data: self.foodOffersSection) | ||
| 296 | - } else if (indexPath.section == 6) { | ||
| 297 | - cell.configureCell(data: self.escapeOffersSection) | ||
| 298 | - } else if (indexPath.section == 7) { | ||
| 299 | - cell.configureCell(data: self.childOffersSection) | ||
| 300 | - } else { | ||
| 301 | - cell.configureCell(data: self.shoppingOffersSection) | ||
| 302 | - } | ||
| 303 | 312 | ||
| 313 | + } else if (indexPath.section == 3) { | ||
| 314 | + let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileCouponFiltersTableViewCell", for: indexPath) as! ProfileCouponFiltersTableViewCell | ||
| 315 | + | ||
| 316 | + cell.delegate = self // Set the offers delegate | ||
| 317 | + cell.configureCell(data: self.couponFilters) | ||
| 318 | + | ||
| 319 | + return cell | ||
| 320 | + | ||
| 321 | + } else { | ||
| 322 | + let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileCouponTableViewCell", for: indexPath) as! ProfileCouponTableViewCell | ||
| 323 | + if let offer = self.filteredOffersSection?.offers[indexPath.row] { | ||
| 324 | + cell.configureCell(data: offer) | ||
| 325 | + } | ||
| 304 | return cell | 326 | return cell |
| 305 | } | 327 | } |
| 306 | 328 | ||
| ... | @@ -330,3 +352,18 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -330,3 +352,18 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
| 330 | } | 352 | } |
| 331 | } | 353 | } |
| 332 | 354 | ||
| 355 | +// Add delegate conformance | ||
| 356 | +extension ProfileViewController: MyRewardsOffersScrollTableViewCellDelegate { | ||
| 357 | + func didSelectOffer(_ offer: OfferModel) { | ||
| 358 | + // Navigate to CouponViewController | ||
| 359 | + openCouponViewController(with: offer) | ||
| 360 | + } | ||
| 361 | +} | ||
| 362 | + | ||
| 363 | +// Add delegate conformance | ||
| 364 | +extension ProfileViewController: ProfileCouponFiltersTableViewCellDelegate { | ||
| 365 | + func didSelectFilter(_ filter: CouponFilterModel) { | ||
| 366 | + self.couponFilterSelected = filter | ||
| 367 | + self.tableView.reloadData() | ||
| 368 | + } | ||
| 369 | +} | ... | ... |
-
Please register or login to post a comment