Showing
4 changed files
with
37 additions
and
14 deletions
No preview for this file type
... | @@ -7,6 +7,10 @@ | ... | @@ -7,6 +7,10 @@ |
7 | 7 | ||
8 | import UIKit | 8 | import UIKit |
9 | 9 | ||
10 | +protocol MyRewardsOffersScrollTableViewCellDelegate: AnyObject { | ||
11 | + func didSelectOffer(_ offer: OfferModel) | ||
12 | +} | ||
13 | + | ||
10 | @objc public class MyRewardsOffersScrollTableViewCell: UITableViewCell { | 14 | @objc public class MyRewardsOffersScrollTableViewCell: UITableViewCell { |
11 | @IBOutlet weak var categoryLabel: UILabel! | 15 | @IBOutlet weak var categoryLabel: UILabel! |
12 | @IBOutlet weak var allButtonView: UIView! | 16 | @IBOutlet weak var allButtonView: UIView! |
... | @@ -14,6 +18,7 @@ import UIKit | ... | @@ -14,6 +18,7 @@ import UIKit |
14 | @IBOutlet weak var collectionView: UICollectionView! | 18 | @IBOutlet weak var collectionView: UICollectionView! |
15 | @IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint! | 19 | @IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint! |
16 | 20 | ||
21 | + weak var delegate: MyRewardsOffersScrollTableViewCellDelegate? | ||
17 | var data: SectionModel? | 22 | var data: SectionModel? |
18 | 23 | ||
19 | public override func awakeFromNib() { | 24 | public override func awakeFromNib() { |
... | @@ -106,7 +111,7 @@ import UIKit | ... | @@ -106,7 +111,7 @@ import UIKit |
106 | } | 111 | } |
107 | } | 112 | } |
108 | 113 | ||
109 | -extension MyRewardsOffersScrollTableViewCell: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { | 114 | +extension MyRewardsOffersScrollTableViewCell: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { |
110 | 115 | ||
111 | 116 | ||
112 | public func numberOfSections(in collectionView: UICollectionView) -> Int { | 117 | public func numberOfSections(in collectionView: UICollectionView) -> Int { |
... | @@ -127,7 +132,9 @@ extension MyRewardsOffersScrollTableViewCell: UICollectionViewDataSource, UICol | ... | @@ -127,7 +132,9 @@ extension MyRewardsOffersScrollTableViewCell: UICollectionViewDataSource, UICol |
127 | } | 132 | } |
128 | 133 | ||
129 | public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { | 134 | public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
130 | -// TODO: open offer | 135 | + if let offer = self.data?.offers[indexPath.row] { |
136 | + delegate?.didSelectOffer(offer) | ||
137 | + } | ||
131 | } | 138 | } |
132 | 139 | ||
133 | // MARK: - UICollectionViewDelegateFlowLayout | 140 | // MARK: - UICollectionViewDelegateFlowLayout | ... | ... |
... | @@ -8,22 +8,22 @@ | ... | @@ -8,22 +8,22 @@ |
8 | import UIKit | 8 | import UIKit |
9 | 9 | ||
10 | @objc public class CouponViewController: UIViewController { | 10 | @objc public class CouponViewController: UIViewController { |
11 | + var coupon: OfferModel? | ||
11 | 12 | ||
12 | public override func viewDidLoad() { | 13 | public override func viewDidLoad() { |
13 | super.viewDidLoad() | 14 | super.viewDidLoad() |
14 | 15 | ||
15 | - // Do any additional setup after loading the view. | 16 | + // Show navigation bar for this screen (with back button) |
17 | + self.navigationController?.setNavigationBarHidden(false, animated: false) | ||
18 | + | ||
19 | + // Configure the view with offer data | ||
20 | + if let offer = coupon { | ||
21 | + setupUI(with: offer) | ||
22 | + } | ||
16 | } | 23 | } |
17 | 24 | ||
18 | - | 25 | + private func setupUI(with coupon: OfferModel) { |
19 | - /* | 26 | + // Set up the UI based on the offer data |
20 | - // MARK: - Navigation | ||
21 | - | ||
22 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
23 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
24 | - // Get the new view controller using segue.destination. | ||
25 | - // Pass the selected object to the new view controller. | ||
26 | } | 27 | } |
27 | - */ | ||
28 | 28 | ||
29 | } | 29 | } | ... | ... |
... | @@ -423,7 +423,6 @@ struct OfferModel { | ... | @@ -423,7 +423,6 @@ struct OfferModel { |
423 | self.tableView.reloadData() | 423 | self.tableView.reloadData() |
424 | } | 424 | } |
425 | 425 | ||
426 | - // Add navigation method | ||
427 | private func openCampaignViewController(with offer: OfferModel) { | 426 | private func openCampaignViewController(with offer: OfferModel) { |
428 | 427 | ||
429 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | 428 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) |
... | @@ -434,6 +433,13 @@ struct OfferModel { | ... | @@ -434,6 +433,13 @@ struct OfferModel { |
434 | // self.present(vc, animated: true) | 433 | // self.present(vc, animated: true) |
435 | } | 434 | } |
436 | } | 435 | } |
436 | + | ||
437 | + private func openCouponViewController(with offer: OfferModel) { | ||
438 | + let vc = SwiftWarplyFramework.CouponViewController(nibName: "CouponViewController", bundle: Bundle(for: MyEmptyClass.self)) | ||
439 | + vc.coupon = offer | ||
440 | + | ||
441 | + self.navigationController?.pushViewController(vc, animated: true) | ||
442 | + } | ||
437 | } | 443 | } |
438 | 444 | ||
439 | // MARK: - TableView | 445 | // MARK: - TableView |
... | @@ -471,7 +477,7 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -471,7 +477,7 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
471 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | 477 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
472 | if (indexPath.section == 0) { | 478 | if (indexPath.section == 0) { |
473 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell | 479 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell |
474 | - cell.delegate = self | 480 | + cell.delegate = self // Set the banner offers delegate |
475 | cell.configureCell(data: self.bannerOffersSection) | 481 | cell.configureCell(data: self.bannerOffersSection) |
476 | // cell.parent = self | 482 | // cell.parent = self |
477 | return cell | 483 | return cell |
... | @@ -479,6 +485,8 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -479,6 +485,8 @@ extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
479 | } else { | 485 | } else { |
480 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsOffersScrollTableViewCell", for: indexPath) as! MyRewardsOffersScrollTableViewCell | 486 | let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsOffersScrollTableViewCell", for: indexPath) as! MyRewardsOffersScrollTableViewCell |
481 | 487 | ||
488 | + cell.delegate = self // Set the offers delegate | ||
489 | + | ||
482 | if (indexPath.section == 1) { | 490 | if (indexPath.section == 1) { |
483 | cell.configureCell(data: self.topOffersSection) | 491 | cell.configureCell(data: self.topOffersSection) |
484 | } else if (indexPath.section == 2) { | 492 | } else if (indexPath.section == 2) { |
... | @@ -533,3 +541,11 @@ extension MyRewardsViewController: MyRewardsBannerOffersScrollTableViewCellDeleg | ... | @@ -533,3 +541,11 @@ extension MyRewardsViewController: MyRewardsBannerOffersScrollTableViewCellDeleg |
533 | openCampaignViewController(with: offer) | 541 | openCampaignViewController(with: offer) |
534 | } | 542 | } |
535 | } | 543 | } |
544 | + | ||
545 | +// Add delegate conformance | ||
546 | +extension MyRewardsViewController: MyRewardsOffersScrollTableViewCellDelegate { | ||
547 | + func didSelectOffer(_ offer: OfferModel) { | ||
548 | + // Navigate to CouponViewController | ||
549 | + openCouponViewController(with: offer) | ||
550 | + } | ||
551 | +} | ... | ... |
-
Please register or login to post a comment