-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProductDetail.swift
75 lines (50 loc) · 1.94 KB
/
ProductDetail.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
// ProductDetail.swift
// Purpose - Shows content for a Detail accessory
// This is a standard view controller, modally-presented
//
// This controller's scene (on the storyboard) must be embedded in a navigation controller
// This functionality needs a delegate (choose a meaningful name)
// Therefore, we declare a protocol
// Example method implementations are at the bottom of this file
import UIKit
protocol ProductShowDetailDelegate: AnyObject {
func showDetailDone(_ controller: UIViewController)
}
class ProductDetail: UIViewController {
// MARK: - Instance variables
weak var delegate: ProductShowDetailDelegate?
// Use if a collection is passed in, or fetched from data model manager
//var items = [Product]()
// Use if an object MAY be passed in
//var item: Product?
// Use if an object WILL be passed in
var item: Product!
// Use if a reference to the data model manager is passed in
// If you don't like the variable name, change it
//var m: DataModelManager!
// MARK: - Outlets (user interface)
@IBOutlet weak var productName: UILabel!
// MARK: - Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
productName.text = item.name
}
// MARK: - Actions (user interface)
// This controller's scene has a nav bar button "Done"
@IBAction func done(_ sender: UIBarButtonItem) {
// Call into the delegate
delegate?.showDetailDone(self)
}
}
// Example method implementations
// Copy to the presenting controller's "Lifecycle" area
/*
// Storyboard scene needs a "Done" bar button on left side
// Connect it to this method...
func showDetailDone(_ controller: UIViewController) {
// Dismiss the "show detail" controller and scene
dismiss(animated: true, completion: nil)
}
*/