Manos Chorianopoulos

add MyRewardsProfileInfoTableViewCell

...@@ -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>
......
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
......