Showing
9 changed files
with
214 additions
and
2 deletions
| ... | @@ -48,6 +48,8 @@ let package = Package( | ... | @@ -48,6 +48,8 @@ let package = Package( |
| 48 | .process("screens/MyRewardsViewController/MyRewardsViewController.xib"), | 48 | .process("screens/MyRewardsViewController/MyRewardsViewController.xib"), |
| 49 | .process("cells/MyRewardsBannerOfferCollectionViewCell/MyRewardsBannerOfferCollectionViewCell.xib"), | 49 | .process("cells/MyRewardsBannerOfferCollectionViewCell/MyRewardsBannerOfferCollectionViewCell.xib"), |
| 50 | .process("cells/MyRewardsOffersScrollTableViewCell/MyRewardsOffersScrollTableViewCell.xib"), | 50 | .process("cells/MyRewardsOffersScrollTableViewCell/MyRewardsOffersScrollTableViewCell.xib"), |
| 51 | + .process("cells/MyRewardsProfileInfoTableViewCell/MyRewardsProfileInfoTableViewCell.xib"), | ||
| 52 | + .process("cells/MyRewardsFiltersTableViewCell/MyRewardsFiltersTableViewCell.xib"), | ||
| 51 | .process("cells/ProfileCouponTableViewCell/ProfileCouponTableViewCell.xib"), | 53 | .process("cells/ProfileCouponTableViewCell/ProfileCouponTableViewCell.xib"), |
| 52 | .process("cells/ProfileFilterCollectionViewCell/ProfileFilterCollectionViewCell.xib"), | 54 | .process("cells/ProfileFilterCollectionViewCell/ProfileFilterCollectionViewCell.xib"), |
| 53 | .process("screens/CouponViewController/CouponViewController.xib"), | 55 | .process("screens/CouponViewController/CouponViewController.xib"), | ... | ... |
| ... | @@ -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>1</integer> | 10 | + <integer>0</integer> |
| 11 | </dict> | 11 | </dict> |
| 12 | </dict> | 12 | </dict> |
| 13 | </dict> | 13 | </dict> | ... | ... |
| ... | @@ -73,6 +73,8 @@ | ... | @@ -73,6 +73,8 @@ |
| 73 | 1EDD0AC62E0D68B6005E162B /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = 1EDD0AC52E0D68B6005E162B /* SQLite */; }; | 73 | 1EDD0AC62E0D68B6005E162B /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = 1EDD0AC52E0D68B6005E162B /* SQLite */; }; |
| 74 | 622DA0AE2F51CAEE00308AB8 /* CouponsetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 622DA0AD2F51CAEE00308AB8 /* CouponsetViewController.xib */; }; | 74 | 622DA0AE2F51CAEE00308AB8 /* CouponsetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 622DA0AD2F51CAEE00308AB8 /* CouponsetViewController.xib */; }; |
| 75 | 622DA0AF2F51CAEE00308AB8 /* CouponsetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622DA0AC2F51CAEE00308AB8 /* CouponsetViewController.swift */; }; | 75 | 622DA0AF2F51CAEE00308AB8 /* CouponsetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622DA0AC2F51CAEE00308AB8 /* CouponsetViewController.swift */; }; |
| 76 | + 6250ABCA2F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6250ABC92F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.xib */; }; | ||
| 77 | + 6250ABCB2F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6250ABC82F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.swift */; }; | ||
| 76 | 626AF6DB2F698FF1008BCA08 /* MerchantAnnotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626AF6DA2F698FF1008BCA08 /* MerchantAnnotation.swift */; }; | 78 | 626AF6DB2F698FF1008BCA08 /* MerchantAnnotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626AF6DA2F698FF1008BCA08 /* MerchantAnnotation.swift */; }; |
| 77 | 626AF6DE2F699081008BCA08 /* MapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626AF6DC2F699081008BCA08 /* MapViewController.swift */; }; | 79 | 626AF6DE2F699081008BCA08 /* MapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626AF6DC2F699081008BCA08 /* MapViewController.swift */; }; |
| 78 | 626AF6DF2F699081008BCA08 /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626AF6DD2F699081008BCA08 /* MapViewController.xib */; }; | 80 | 626AF6DF2F699081008BCA08 /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626AF6DD2F699081008BCA08 /* MapViewController.xib */; }; |
| ... | @@ -166,6 +168,8 @@ | ... | @@ -166,6 +168,8 @@ |
| 166 | 1EDD0ABC2E0D308A005E162B /* XIBLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XIBLoader.swift; sourceTree = "<group>"; }; | 168 | 1EDD0ABC2E0D308A005E162B /* XIBLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XIBLoader.swift; sourceTree = "<group>"; }; |
| 167 | 622DA0AC2F51CAEE00308AB8 /* CouponsetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsetViewController.swift; sourceTree = "<group>"; }; | 169 | 622DA0AC2F51CAEE00308AB8 /* CouponsetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsetViewController.swift; sourceTree = "<group>"; }; |
| 168 | 622DA0AD2F51CAEE00308AB8 /* CouponsetViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CouponsetViewController.xib; sourceTree = "<group>"; }; | 170 | 622DA0AD2F51CAEE00308AB8 /* CouponsetViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CouponsetViewController.xib; sourceTree = "<group>"; }; |
| 171 | + 6250ABC82F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsFiltersTableViewCell.swift; sourceTree = "<group>"; }; | ||
| 172 | + 6250ABC92F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsFiltersTableViewCell.xib; sourceTree = "<group>"; }; | ||
| 169 | 626AF6DA2F698FF1008BCA08 /* MerchantAnnotation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantAnnotation.swift; sourceTree = "<group>"; }; | 173 | 626AF6DA2F698FF1008BCA08 /* MerchantAnnotation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantAnnotation.swift; sourceTree = "<group>"; }; |
| 170 | 626AF6DC2F699081008BCA08 /* MapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapViewController.swift; sourceTree = "<group>"; }; | 174 | 626AF6DC2F699081008BCA08 /* MapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapViewController.swift; sourceTree = "<group>"; }; |
| 171 | 626AF6DD2F699081008BCA08 /* MapViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; | 175 | 626AF6DD2F699081008BCA08 /* MapViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; |
| ... | @@ -385,6 +389,7 @@ | ... | @@ -385,6 +389,7 @@ |
| 385 | 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */, | 389 | 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */, |
| 386 | 1EB4F4222DE09A4300D934C0 /* MyRewardsBannerOffersScrollTableViewCell */, | 390 | 1EB4F4222DE09A4300D934C0 /* MyRewardsBannerOffersScrollTableViewCell */, |
| 387 | 1E66E4942E30F8C600BCEF9D /* MyRewardsProfileInfoTableViewCell */, | 391 | 1E66E4942E30F8C600BCEF9D /* MyRewardsProfileInfoTableViewCell */, |
| 392 | + 6250ABC72F6D5A87002A5A8D /* MyRewardsFiltersTableViewCell */, | ||
| 388 | ); | 393 | ); |
| 389 | path = cells; | 394 | path = cells; |
| 390 | sourceTree = "<group>"; | 395 | sourceTree = "<group>"; |
| ... | @@ -479,6 +484,15 @@ | ... | @@ -479,6 +484,15 @@ |
| 479 | path = CouponsetViewController; | 484 | path = CouponsetViewController; |
| 480 | sourceTree = "<group>"; | 485 | sourceTree = "<group>"; |
| 481 | }; | 486 | }; |
| 487 | + 6250ABC72F6D5A87002A5A8D /* MyRewardsFiltersTableViewCell */ = { | ||
| 488 | + isa = PBXGroup; | ||
| 489 | + children = ( | ||
| 490 | + 6250ABC82F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.swift */, | ||
| 491 | + 6250ABC92F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.xib */, | ||
| 492 | + ); | ||
| 493 | + path = MyRewardsFiltersTableViewCell; | ||
| 494 | + sourceTree = "<group>"; | ||
| 495 | + }; | ||
| 482 | 626AF6D92F698F96008BCA08 /* MapViewController */ = { | 496 | 626AF6D92F698F96008BCA08 /* MapViewController */ = { |
| 483 | isa = PBXGroup; | 497 | isa = PBXGroup; |
| 484 | children = ( | 498 | children = ( |
| ... | @@ -713,6 +727,7 @@ | ... | @@ -713,6 +727,7 @@ |
| 713 | 1EDBAF042DE843CA00911E79 /* ProfileCouponTableViewCell.xib in Resources */, | 727 | 1EDBAF042DE843CA00911E79 /* ProfileCouponTableViewCell.xib in Resources */, |
| 714 | 627B9C762F6C3EB000A2456F /* CategoryOffersViewController.xib in Resources */, | 728 | 627B9C762F6C3EB000A2456F /* CategoryOffersViewController.xib in Resources */, |
| 715 | 1EDBAF0C2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib in Resources */, | 729 | 1EDBAF0C2DE8441000911E79 /* ProfileQuestionnaireTableViewCell.xib in Resources */, |
| 730 | + 6250ABCA2F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.xib in Resources */, | ||
| 716 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, | 731 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, |
| 717 | 627B9C852F6C492F00A2456F /* CategoryOffersGridTableViewCell.xib in Resources */, | 732 | 627B9C852F6C492F00A2456F /* CategoryOffersGridTableViewCell.xib in Resources */, |
| 718 | 1E116F682DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib in Resources */, | 733 | 1E116F682DE845B1009AE791 /* ProfileFilterCollectionViewCell.xib in Resources */, |
| ... | @@ -819,6 +834,7 @@ | ... | @@ -819,6 +834,7 @@ |
| 819 | 1E917CD72DDF64B2002221D8 /* MyRewardsViewController.swift in Sources */, | 834 | 1E917CD72DDF64B2002221D8 /* MyRewardsViewController.swift in Sources */, |
| 820 | 1E917CDC2DDF68C7002221D8 /* CouponViewController.swift in Sources */, | 835 | 1E917CDC2DDF68C7002221D8 /* CouponViewController.swift in Sources */, |
| 821 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */, | 836 | 1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */, |
| 837 | + 6250ABCB2F6D5ABE002A5A8D /* MyRewardsFiltersTableViewCell.swift in Sources */, | ||
| 822 | 626AF6DE2F699081008BCA08 /* MapViewController.swift in Sources */, | 838 | 626AF6DE2F699081008BCA08 /* MapViewController.swift in Sources */, |
| 823 | 1EDBAF112DE8443B00911E79 /* ProfileHeaderTableViewCell.swift in Sources */, | 839 | 1EDBAF112DE8443B00911E79 /* ProfileHeaderTableViewCell.swift in Sources */, |
| 824 | 1EDBAF052DE843CA00911E79 /* ProfileCouponTableViewCell.swift in Sources */, | 840 | 1EDBAF052DE843CA00911E79 /* ProfileCouponTableViewCell.swift 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>0</integer> | 10 | + <integer>1</integer> |
| 11 | </dict> | 11 | </dict> |
| 12 | </dict> | 12 | </dict> |
| 13 | </dict> | 13 | </dict> | ... | ... |
No preview for this file type
| 1 | +// | ||
| 2 | +// MyRewardsFiltersTableViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 20/3/26. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +@objc(MyRewardsFiltersTableViewCell) | ||
| 11 | +public class MyRewardsFiltersTableViewCell: UITableViewCell { | ||
| 12 | + @IBOutlet weak var filtersView: UIView! | ||
| 13 | + @IBOutlet weak var filtersLabel: UILabel! | ||
| 14 | + @IBOutlet weak var filtersImage: UIImageView! | ||
| 15 | + @IBOutlet weak var mapView: UIView! | ||
| 16 | + @IBOutlet weak var mapImage: UIImageView! | ||
| 17 | + @IBOutlet weak var filtersButton: UIButton! | ||
| 18 | + @IBOutlet weak var mapButton: UIButton! | ||
| 19 | + | ||
| 20 | + public override func awakeFromNib() { | ||
| 21 | + super.awakeFromNib() | ||
| 22 | + // Initialization code | ||
| 23 | + | ||
| 24 | + self.filtersView.backgroundColor = UIColor(rgb: 0xF1F2F4) | ||
| 25 | + self.filtersView.layer.cornerRadius = 16 // Assuming height is 32 or similar based on standard chip design | ||
| 26 | + self.filtersView.layer.masksToBounds = true | ||
| 27 | + | ||
| 28 | + self.filtersLabel.text = "Αναζήτηση" | ||
| 29 | + self.filtersLabel.font = UIFont(name: "PingLCG-Regular", size: 16) | ||
| 30 | + self.filtersLabel.textColor = UIColor(rgb: 0x000F1E) | ||
| 31 | + self.filtersLabel.frame.size.width = self.filtersLabel.intrinsicContentSize.width | ||
| 32 | + self.filtersLabel.frame.size.height = self.filtersLabel.intrinsicContentSize.height | ||
| 33 | + | ||
| 34 | + self.filtersImage.image = UIImage(named: "filter", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
| 35 | + | ||
| 36 | + if mapView != nil { | ||
| 37 | + self.mapView.backgroundColor = UIColor(rgb: 0xF1F2F4) | ||
| 38 | + self.mapView.layer.cornerRadius = 22 // Assuming height is 44 | ||
| 39 | + self.mapView.layer.masksToBounds = true | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + if mapImage != nil { | ||
| 43 | + self.mapImage.image = UIImage(named: "map_pin_2", in: Bundle.frameworkResourceBundle, compatibleWith: nil) | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
| 48 | + super.setSelected(selected, animated: animated) | ||
| 49 | + | ||
| 50 | + // Configure the view for the selected state | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="24506" 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="24504"/> | ||
| 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="default" indentationWidth="10" reuseIdentifier="MyRewardsFiltersTableViewCell" rowHeight="76" id="KGk-i7-Jjw" customClass="MyRewardsFiltersTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 14 | + <rect key="frame" x="0.0" y="0.0" width="320" height="76"/> | ||
| 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="76"/> | ||
| 18 | + <autoresizingMask key="autoresizingMask"/> | ||
| 19 | + <subviews> | ||
| 20 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bkB-JL-Vfn" userLabel="HeaderView"> | ||
| 21 | + <rect key="frame" x="0.0" y="24" width="320" height="20"/> | ||
| 22 | + <subviews> | ||
| 23 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sSt-4C-oHy" userLabel="FiltersView"> | ||
| 24 | + <rect key="frame" x="18" y="0.0" width="129.66666666666666" height="32"/> | ||
| 25 | + <subviews> | ||
| 26 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναζήτηση" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cy5-nB-X7u" userLabel="FiltersLabel"> | ||
| 27 | + <rect key="frame" x="12" y="5.9999999999999982" width="83.666666666666671" height="20.333333333333329"/> | ||
| 28 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 29 | + <nil key="textColor"/> | ||
| 30 | + <nil key="highlightedColor"/> | ||
| 31 | + </label> | ||
| 32 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="n7X-Qx-pQ1" userLabel="Filters Image View"> | ||
| 33 | + <rect key="frame" x="101.66666666666667" y="8" width="16" height="16"/> | ||
| 34 | + <constraints> | ||
| 35 | + <constraint firstAttribute="width" constant="16" id="Eqg-CG-Tt7"/> | ||
| 36 | + <constraint firstAttribute="height" constant="16" id="cto-Dy-k09"/> | ||
| 37 | + </constraints> | ||
| 38 | + </imageView> | ||
| 39 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iYB-2q-8dL"> | ||
| 40 | + <rect key="frame" x="0.0" y="0.0" width="129.66666666666666" height="32"/> | ||
| 41 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 42 | + <state key="normal" title="Button"/> | ||
| 43 | + <buttonConfiguration key="configuration" style="plain" title="Button"> | ||
| 44 | + <color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 45 | + </buttonConfiguration> | ||
| 46 | + </button> | ||
| 47 | + </subviews> | ||
| 48 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 49 | + <constraints> | ||
| 50 | + <constraint firstItem="n7X-Qx-pQ1" firstAttribute="centerY" secondItem="sSt-4C-oHy" secondAttribute="centerY" id="100-YI-bgI"/> | ||
| 51 | + <constraint firstItem="cy5-nB-X7u" firstAttribute="centerY" secondItem="sSt-4C-oHy" secondAttribute="centerY" id="AS5-GP-KUr"/> | ||
| 52 | + <constraint firstItem="cy5-nB-X7u" firstAttribute="leading" secondItem="sSt-4C-oHy" secondAttribute="leading" constant="12" id="BgH-Js-i7j"/> | ||
| 53 | + <constraint firstAttribute="bottom" secondItem="iYB-2q-8dL" secondAttribute="bottom" id="OXt-Ak-CsU"/> | ||
| 54 | + <constraint firstItem="n7X-Qx-pQ1" firstAttribute="leading" secondItem="cy5-nB-X7u" secondAttribute="trailing" constant="6" id="P41-Tz-OAo"/> | ||
| 55 | + <constraint firstItem="iYB-2q-8dL" firstAttribute="leading" secondItem="sSt-4C-oHy" secondAttribute="leading" id="def-UO-nPQ"/> | ||
| 56 | + <constraint firstAttribute="trailing" secondItem="n7X-Qx-pQ1" secondAttribute="trailing" constant="12" id="ov2-MB-hrs"/> | ||
| 57 | + <constraint firstAttribute="trailing" secondItem="iYB-2q-8dL" secondAttribute="trailing" id="p1Z-1g-wOG"/> | ||
| 58 | + <constraint firstItem="iYB-2q-8dL" firstAttribute="top" secondItem="sSt-4C-oHy" secondAttribute="top" id="tCL-WX-InD"/> | ||
| 59 | + <constraint firstAttribute="height" constant="32" id="zxY-Tw-usz"/> | ||
| 60 | + </constraints> | ||
| 61 | + </view> | ||
| 62 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GHE-KI-9tg" userLabel="MapView"> | ||
| 63 | + <rect key="frame" x="258" y="-6" width="44" height="44"/> | ||
| 64 | + <subviews> | ||
| 65 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="k8m-BH-IxE" userLabel="Map Image View"> | ||
| 66 | + <rect key="frame" x="12" y="12" width="20" height="20"/> | ||
| 67 | + <constraints> | ||
| 68 | + <constraint firstAttribute="height" constant="20" id="8Ll-gy-xXg"/> | ||
| 69 | + <constraint firstAttribute="width" constant="20" id="pBH-V0-8Nj"/> | ||
| 70 | + </constraints> | ||
| 71 | + </imageView> | ||
| 72 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="d01-Y6-q6l"> | ||
| 73 | + <rect key="frame" x="0.0" y="0.0" width="44" height="44"/> | ||
| 74 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 75 | + <state key="normal" title="Button"/> | ||
| 76 | + <buttonConfiguration key="configuration" style="plain" title="Button"> | ||
| 77 | + <color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 78 | + </buttonConfiguration> | ||
| 79 | + </button> | ||
| 80 | + </subviews> | ||
| 81 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 82 | + <constraints> | ||
| 83 | + <constraint firstAttribute="height" constant="44" id="DfQ-IE-c67"/> | ||
| 84 | + <constraint firstItem="k8m-BH-IxE" firstAttribute="centerX" secondItem="GHE-KI-9tg" secondAttribute="centerX" id="OoU-eV-Xkh"/> | ||
| 85 | + <constraint firstItem="k8m-BH-IxE" firstAttribute="centerY" secondItem="GHE-KI-9tg" secondAttribute="centerY" id="cZl-K3-dkT"/> | ||
| 86 | + <constraint firstAttribute="width" constant="44" id="nd0-tE-vKC"/> | ||
| 87 | + <constraint firstItem="d01-Y6-q6l" firstAttribute="top" secondItem="GHE-KI-9tg" secondAttribute="top" id="PBu-Uu-MDq"/> | ||
| 88 | + <constraint firstItem="d01-Y6-q6l" firstAttribute="leading" secondItem="GHE-KI-9tg" secondAttribute="leading" id="4Pk-OT-LQ6"/> | ||
| 89 | + <constraint firstAttribute="trailing" secondItem="d01-Y6-q6l" secondAttribute="trailing" id="WzZ-r0-HTj"/> | ||
| 90 | + <constraint firstAttribute="bottom" secondItem="d01-Y6-q6l" secondAttribute="bottom" id="eg0-Pp-vCp"/> | ||
| 91 | + </constraints> | ||
| 92 | + </view> | ||
| 93 | + </subviews> | ||
| 94 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 95 | + <constraints> | ||
| 96 | + <constraint firstItem="sSt-4C-oHy" firstAttribute="leading" secondItem="bkB-JL-Vfn" secondAttribute="leading" constant="18" id="5pn-cY-zMp"/> | ||
| 97 | + <constraint firstAttribute="bottom" secondItem="sSt-4C-oHy" secondAttribute="bottom" id="Bf7-Ee-EMt"/> | ||
| 98 | + <constraint firstItem="GHE-KI-9tg" firstAttribute="centerY" secondItem="sSt-4C-oHy" secondAttribute="centerY" id="HYW-Bp-COU"/> | ||
| 99 | + <constraint firstAttribute="trailing" secondItem="GHE-KI-9tg" secondAttribute="trailing" constant="18" id="N5l-ZF-3tU"/> | ||
| 100 | + <constraint firstItem="sSt-4C-oHy" firstAttribute="top" secondItem="bkB-JL-Vfn" secondAttribute="top" id="XRz-p7-DUf"/> | ||
| 101 | + </constraints> | ||
| 102 | + </view> | ||
| 103 | + </subviews> | ||
| 104 | + <constraints> | ||
| 105 | + <constraint firstAttribute="trailing" secondItem="bkB-JL-Vfn" secondAttribute="trailing" id="NTG-gR-Wn8"/> | ||
| 106 | + <constraint firstItem="bkB-JL-Vfn" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="24" id="aC7-GL-OJD"/> | ||
| 107 | + <constraint firstItem="bkB-JL-Vfn" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="stg-Zc-wZx"/> | ||
| 108 | + <constraint firstAttribute="bottom" secondItem="bkB-JL-Vfn" secondAttribute="bottom" id="zSm-aE-Ffd"/> | ||
| 109 | + </constraints> | ||
| 110 | + </tableViewCellContentView> | ||
| 111 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
| 112 | + <connections> | ||
| 113 | + <outlet property="filtersButton" destination="iYB-2q-8dL" id="IfO-nm-nWT"/> | ||
| 114 | + <outlet property="filtersImage" destination="n7X-Qx-pQ1" id="2mC-0a-hA0"/> | ||
| 115 | + <outlet property="filtersLabel" destination="cy5-nB-X7u" id="j2y-1m-geZ"/> | ||
| 116 | + <outlet property="filtersView" destination="sSt-4C-oHy" id="CVg-Fk-E2G"/> | ||
| 117 | + <outlet property="mapButton" destination="d01-Y6-q6l" id="gly-Le-7ea"/> | ||
| 118 | + <outlet property="mapImage" destination="k8m-BH-IxE" id="a8X-08-dmo"/> | ||
| 119 | + <outlet property="mapView" destination="GHE-KI-9tg" id="njW-P9-8Yw"/> | ||
| 120 | + </connections> | ||
| 121 | + <point key="canvasLocation" x="65.648854961832058" y="164.78873239436621"/> | ||
| 122 | + </tableViewCell> | ||
| 123 | + </objects> | ||
| 124 | + <resources> | ||
| 125 | + <systemColor name="systemBackgroundColor"> | ||
| 126 | + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
| 127 | + </systemColor> | ||
| 128 | + </resources> | ||
| 129 | +</document> |
| ... | @@ -12,6 +12,7 @@ import Foundation | ... | @@ -12,6 +12,7 @@ import Foundation |
| 12 | 12 | ||
| 13 | public enum SectionType { | 13 | public enum SectionType { |
| 14 | case myRewardsProfileInfo // MyRewardsProfileInfoTableViewCell | 14 | case myRewardsProfileInfo // MyRewardsProfileInfoTableViewCell |
| 15 | + case myRewardsFilters // MyRewardsFiltersTableViewCell | ||
| 15 | case myRewardsBannerOffers // MyRewardsBannerOffersScrollTableViewCell | 16 | case myRewardsBannerOffers // MyRewardsBannerOffersScrollTableViewCell |
| 16 | case myRewardsHorizontalCouponsets // MyRewardsOffersScrollTableViewCell | 17 | case myRewardsHorizontalCouponsets // MyRewardsOffersScrollTableViewCell |
| 17 | case profileHeader // ProfileHeaderTableViewCell (no items) | 18 | case profileHeader // ProfileHeaderTableViewCell (no items) | ... | ... |
| ... | @@ -135,6 +135,7 @@ import UIKit | ... | @@ -135,6 +135,7 @@ import UIKit |
| 135 | private func registerTableViewCells() { | 135 | private func registerTableViewCells() { |
| 136 | let cellConfigs = [ | 136 | let cellConfigs = [ |
| 137 | ("MyRewardsProfileInfoTableViewCell", "MyRewardsProfileInfoTableViewCell"), | 137 | ("MyRewardsProfileInfoTableViewCell", "MyRewardsProfileInfoTableViewCell"), |
| 138 | + ("MyRewardsFiltersTableViewCell", "MyRewardsFiltersTableViewCell"), | ||
| 138 | ("MyRewardsBannerOffersScrollTableViewCell", "MyRewardsBannerOffersScrollTableViewCell"), | 139 | ("MyRewardsBannerOffersScrollTableViewCell", "MyRewardsBannerOffersScrollTableViewCell"), |
| 139 | ("MyRewardsOffersScrollTableViewCell", "MyRewardsOffersScrollTableViewCell") | 140 | ("MyRewardsOffersScrollTableViewCell", "MyRewardsOffersScrollTableViewCell") |
| 140 | ] | 141 | ] |
| ... | @@ -573,6 +574,10 @@ import UIKit | ... | @@ -573,6 +574,10 @@ import UIKit |
| 573 | // Always insert at index 0 (top of the list) | 574 | // Always insert at index 0 (top of the list) |
| 574 | sections.insert(defaultProfileSection, at: 0) | 575 | sections.insert(defaultProfileSection, at: 0) |
| 575 | profileSection = defaultProfileSection | 576 | profileSection = defaultProfileSection |
| 577 | + | ||
| 578 | + // Insert filters cell immediately below profile info | ||
| 579 | + let filtersSection = SectionModel(sectionType: .myRewardsFilters) | ||
| 580 | + sections.insert(filtersSection, at: 1) | ||
| 576 | } | 581 | } |
| 577 | 582 | ||
| 578 | private func updateProfileSectionWithData(_ profile: ProfileModel) { | 583 | private func updateProfileSectionWithData(_ profile: ProfileModel) { |
| ... | @@ -734,6 +739,12 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -734,6 +739,12 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
| 734 | cell.configureCell(data: sectionModel) | 739 | cell.configureCell(data: sectionModel) |
| 735 | return cell | 740 | return cell |
| 736 | 741 | ||
| 742 | + case .myRewardsFilters: | ||
| 743 | + let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsFiltersTableViewCell", for: indexPath) as! MyRewardsFiltersTableViewCell | ||
| 744 | + // TODO: wire filtersButton action (e.g. open filter sheet) | ||
| 745 | + // TODO: wire mapButton action (e.g. open map view) | ||
| 746 | + return cell | ||
| 747 | + | ||
| 737 | case .myRewardsBannerOffers: | 748 | case .myRewardsBannerOffers: |
| 738 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell | 749 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell |
| 739 | cell.delegate = self | 750 | cell.delegate = self | ... | ... |
-
Please register or login to post a comment