diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
index c2bdbb3..49f67ae 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
@@ -284,6 +284,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionDetailsInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionDetailsInterfaceController.swift
new file mode 100644
index 0000000..492d71b
--- /dev/null
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionDetailsInterfaceController.swift
@@ -0,0 +1,46 @@
+//
+// TransactionDetailsInterfaceController.swift
+// SynchronyFinancial WatchKit Extension
+//
+// Created by Alan Maynard on 4/2/19.
+// Copyright © 2019 Alan Maynard. All rights reserved.
+//
+
+import WatchKit
+import Foundation
+
+class TransactionDetailsInterfaceController: WKInterfaceController {
+ @IBOutlet var transactionName: WKInterfaceLabel!
+ @IBOutlet var dateLabel: WKInterfaceLabel!
+ @IBOutlet var amountLabel: WKInterfaceLabel!
+ @IBOutlet var cancelButton: WKInterfaceButton!
+ override func awake(withContext context: Any?) {
+ super.awake(withContext: context)
+
+ guard let data = context as? [String: Any],
+ let transaction = data["transaction"] as? Transaction,
+ let merchant = data["merchant"] as? String,
+ let date = data["date"] as? Date,
+ let amount = data["amount"] as? Double else {
+ NSLog("Error receiving context in TransactionDetails.")
+ return
+ }
+
+ setTitle("Dismiss")
+ transactionName.setText(merchant)
+ dateLabel.setText("Date: \(DateFormatter.localizedString(from: date, dateStyle: .short, timeStyle: .none))")
+ amountLabel.setText(String(format: "Amount: $%.2f", amount))
+ cancelButton.setHidden(!transaction.isModifiable)
+ }
+
+ override func willActivate() {
+ // This method is called when watch view controller is about to be visible to user
+ super.willActivate()
+ }
+
+ override func didDeactivate() {
+ // This method is called when watch view controller is no longer visible
+ super.didDeactivate()
+ }
+
+}
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
index 93689b4..b23c115 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
@@ -35,6 +35,16 @@ class TransactionsInterfaceController: WKInterfaceController {
super.didDeactivate()
}
+ override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
+ let transaction = transactions[rowIndex]
+ let context: [String: Any] = ["transaction": transaction,
+ "merchant": transaction.merchantID,
+ "date": transaction.date,
+ "amount": transaction.amount]
+
+ presentController(withName: "TransactionDetails", context: context)
+ }
+
private func configureRows() {
// first sort our demo data in descending date order
transactions.sort(by: { $0.date > $1.date })
diff --git a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
index ceb6fe6..4662621 100644
--- a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
+++ b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
@@ -19,6 +19,7 @@
48F2430E2214CBF700B9C894 /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48F2430C2214CBF700B9C894 /* Transaction.swift */; };
48F2430F2214CC2200B9C894 /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48F2430C2214CBF700B9C894 /* Transaction.swift */; };
67228CD8224D6E2700CA29E4 /* WKInterfaceImage+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67228CD7224D6E2700CA29E4 /* WKInterfaceImage+Extensions.swift */; };
+ 67293CF122542F15009E0E7A /* TransactionDetailsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67293CF022542F15009E0E7A /* TransactionDetailsInterfaceController.swift */; };
673F396E21A644570051469E /* MainMenuInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 673F396C21A644460051469E /* MainMenuInterfaceController.swift */; };
673F397021A652A00051469E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 673F396F21A652A00051469E /* Assets.xcassets */; };
674BD1532239A39D0076AFD6 /* PayBillInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674BD1522239A39D0076AFD6 /* PayBillInterfaceController.swift */; };
@@ -98,6 +99,7 @@
48F2430C2214CBF700B9C894 /* Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transaction.swift; sourceTree = ""; };
4EA10823B2E5A7A4FEF31740 /* libPods-SynchronyFinancial WatchKit App.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SynchronyFinancial WatchKit App.a"; sourceTree = BUILT_PRODUCTS_DIR; };
67228CD7224D6E2700CA29E4 /* WKInterfaceImage+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WKInterfaceImage+Extensions.swift"; sourceTree = ""; };
+ 67293CF022542F15009E0E7A /* TransactionDetailsInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionDetailsInterfaceController.swift; sourceTree = ""; };
673F396C21A644460051469E /* MainMenuInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuInterfaceController.swift; sourceTree = ""; };
673F396F21A652A00051469E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
674BD1522239A39D0076AFD6 /* PayBillInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayBillInterfaceController.swift; sourceTree = ""; };
@@ -206,6 +208,7 @@
isa = PBXGroup;
children = (
678C62B9224ECDFD0007AD53 /* PaymentResultInterfaceController.swift */,
+ 67293CF022542F15009E0E7A /* TransactionDetailsInterfaceController.swift */,
674BD1522239A39D0076AFD6 /* PayBillInterfaceController.swift */,
481864A7224802BB0059CF7A /* PaymentDetailInterfaceController.swift */,
676392B322429DC800740A8C /* TransactionsInterfaceController.swift */,
@@ -492,6 +495,7 @@
678C38842230950100FEAAF6 /* AccountDetailsInterfaceController.swift in Sources */,
673F396E21A644570051469E /* MainMenuInterfaceController.swift in Sources */,
67E17B87223812C2008871FE /* Defaults.swift in Sources */,
+ 67293CF122542F15009E0E7A /* TransactionDetailsInterfaceController.swift in Sources */,
1123372E223ABD6400B70925 /* FetchData.swift in Sources */,
48F243072214C98600B9C894 /* AccountTableInterfaceController.swift in Sources */,
676392B62242A3F800740A8C /* TransactionCell.swift in Sources */,