-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDetailViewController.swift
More file actions
84 lines (68 loc) · 2.34 KB
/
DetailViewController.swift
File metadata and controls
84 lines (68 loc) · 2.34 KB
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
76
77
78
79
80
81
82
83
84
//
// DetailDeviceViewController.swift
// Funbox
//
// Created by Антон Кочетков on 24.11.2021.
//
import UIKit
protocol AddDeviceDelegate {
func addDevice(_ device: Device)
}
protocol EditDeviceDelegate {
func editDevice(_ device: Device)
}
class DetailViewController: UIViewController {
private lazy var deviceView: DetailDeviceView = {
let view = DetailDeviceView(frame: self.view.frame)
return view
}()
var currectDevice: Device?
var delegateAdd: AddDeviceDelegate!
var delegateEdit: EditDeviceDelegate!
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(deviceView)
deviceView.updateConstraints()
setupNavigationBar()
view.backgroundColor = .white
setupEditScreen()
}
private func setupNavigationBar() {
let leftNavItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelAction))
leftNavItem.tintColor = .black
let rightNavItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(saveAction))
rightNavItem.tintColor = .black
navigationItem.leftBarButtonItem = leftNavItem
navigationItem.rightBarButtonItem = rightNavItem
}
@objc private func cancelAction() {
navigationController?.popViewController(animated: true)
}
@objc private func saveAction() {
if let name = deviceView.nameDeviceTextField.text,
!name.isEmpty,
let price = deviceView.priceTextField.text?.toDouble(),
let count = deviceView.countTextField.text?.toInt() {
let device = Device(name: name, price: price, count: count)
if currectDevice == nil {
delegateAdd.addDevice(device)
} else {
delegateEdit.editDevice(device)
}
navigationController?.popViewController(animated: true)
}
}
private func setupEditScreen() {
if currectDevice != nil {
deviceView.configure(name: currectDevice!.name, price: currectDevice!.price, count: currectDevice!.count)
}
}
}
extension String {
fileprivate func toDouble() -> Double? {
return Double(self)
}
fileprivate func toInt() -> Int? {
return Int(self)
}
}