-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathMasterViewController.swift
82 lines (61 loc) · 2.26 KB
/
MasterViewController.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
76
77
78
79
80
81
82
// Copyright © 2018 ObjectBox. All rights reserved.
import UIKit
import ObjectBox
class MasterViewController: UITableViewController {
lazy var noteBox: Box<Note> = Services.instance.noteBox
var noteBoxObserver: Observer?
lazy var authorBox: Box<Author> = Services.instance.authorBox
var authorBoxObserver: Observer?
override func viewDidLoad() {
super.viewDidLoad()
clearsSelectionOnViewWillAppear = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
noteBoxObserver = noteBox.subscribe {
self.tableView.reloadData()
}
authorBoxObserver = authorBox.subscribe {
self.tableView.reloadData()
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
noteBoxObserver = nil
authorBoxObserver = nil
}
@IBAction func replaceWithDemoData(_ sender: Any?) {
try! Services.instance.replaceWithDemoData()
tableView.reloadData()
}
}
// MARK: - Table View
extension MasterViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
if indexPath.section == 0 {
if indexPath.row == 0 {
cell.detailTextLabel?.text = "\(try! noteBox.count())"
} else if indexPath.row == 1 {
cell.detailTextLabel?.text = "\(try! authorBox.count())"
}
}
return cell
}
}
// MARK: - Segues
extension MasterViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showNotes" {
let controller = segue.destination as! NotesOverviewViewController
controller.filterBy(authorId: nil)
} else if segue.identifier == "createNote" {
let controller = (segue.destination as! UINavigationController).topViewController as! NoteEditingViewController
controller.mode = .draft
controller.note = Note()
}
}
@IBAction func unwindFromDraftingNote(segue: UIStoryboardSegue) {
// no op
}
}