diff --git a/AutoCat.xcodeproj/project.pbxproj b/AutoCat.xcodeproj/project.pbxproj index 8d0ec60..60979b9 100644 --- a/AutoCat.xcodeproj/project.pbxproj +++ b/AutoCat.xcodeproj/project.pbxproj @@ -767,7 +767,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 37; + CURRENT_PROJECT_VERSION = 38; DEVELOPMENT_TEAM = 46DTTB8X4S; INFOPLIST_FILE = AutoCat/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -789,7 +789,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 37; + CURRENT_PROJECT_VERSION = 38; DEVELOPMENT_TEAM = 46DTTB8X4S; INFOPLIST_FILE = AutoCat/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; diff --git a/AutoCat/Controllers/Location/EventsController.swift b/AutoCat/Controllers/Location/EventsController.swift index efccd04..fe293e6 100644 --- a/AutoCat/Controllers/Location/EventsController.swift +++ b/AutoCat/Controllers/Location/EventsController.swift @@ -37,7 +37,7 @@ enum EventsMode { case list } -class EventsController: UIViewController, UITableViewDataSource, UITableViewDelegate { +class EventsController: UIViewController, UITableViewDataSource, UITableViewDelegate, MKMapViewDelegate { @IBOutlet weak var map: MKMapView! @IBOutlet weak var tableView: UITableView! @@ -49,10 +49,6 @@ class EventsController: UIViewController, UITableViewDataSource, UITableViewDele public var vehicle: Vehicle? { didSet { - if let vehicle = self.vehicle { - self.pins = vehicle.events.map(EventPin.init(event:)) - } - if self.isViewLoaded { self.updateInterface() } @@ -73,14 +69,24 @@ class EventsController: UIViewController, UITableViewDataSource, UITableViewDele self.modeButton = UIBarButtonItem(image: UIImage(systemName: "list.bullet"), style: .plain, target: self, action: #selector(switchMode(_:))) self.addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addEvent(_:))) self.navigationItem.rightBarButtonItems = [self.modeButton, self.addButton] + self.map.delegate = self self.updateInterface() } func updateInterface() { - self.map.removeAnnotations(self.map.annotations) - self.map.addAnnotations(self.pins) - self.map.centerOnPins() + if let vehicle = self.vehicle { + self.pins = vehicle.events.map(EventPin.init(event:)) + } + + if !self.pins.isEmpty { + self.map.removeAnnotations(self.map.annotations) + self.map.addAnnotations(self.pins) + self.map.centerOnPins() + } else { + self.map.showsUserLocation = true + } + self.tableView.reloadData() } @@ -220,8 +226,11 @@ class EventsController: UIViewController, UITableViewDataSource, UITableViewDele try realm.write { realm.add(vehicle, update: .all) } + } else { + self.vehicle?.events.removeAll() + self.vehicle?.events.append(objectsIn: vehicle.events) } - self.vehicle = vehicle + self.updateInterface() IHProgressHUD.dismiss() return true } catch { @@ -230,4 +239,12 @@ class EventsController: UIViewController, UITableViewDataSource, UITableViewDele return false } } + + // MARK: - MKMapViewDelegate + + public func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) { + let region = MKCoordinateRegion(center: userLocation.coordinate, latitudinalMeters: 1000, longitudinalMeters: 1000) + self.map.setRegion(region, animated: true) + self.map.showsUserLocation = false + } } diff --git a/AutoCat/Controllers/ReportController.swift b/AutoCat/Controllers/ReportController.swift index 5229127..fa02288 100644 --- a/AutoCat/Controllers/ReportController.swift +++ b/AutoCat/Controllers/ReportController.swift @@ -135,6 +135,8 @@ class ReportController: UIViewController, UICollectionViewDataSource, UICollecti default: break } + + self.collection.reloadData() } // MARK: - UICollectionViewDataSource @@ -276,7 +278,7 @@ class ReportController: UIViewController, UICollectionViewDataSource, UICollecti controller.owners = self.vehicle?.ownershipPeriods.toArray() ?? [] self.navigationController?.pushViewController(controller, animated: true) } - else if let events = self.vehicle?.events, indexPath.row == ReportGeneralSection.events.rawValue && events.count > 0 { + else if indexPath.row == ReportGeneralSection.events.rawValue { let controller = sb.instantiateViewController(identifier: "EventsController") as EventsController controller.vehicle = self.vehicle self.navigationController?.pushViewController(controller, animated: true)