diff --git a/WireGuard/Assets.xcassets/Arrow.imageset/Arrow.pdf b/WireGuard/Assets.xcassets/Arrow.imageset/Arrow.pdf new file mode 100644 index 0000000..781e309 Binary files /dev/null and b/WireGuard/Assets.xcassets/Arrow.imageset/Arrow.pdf differ diff --git a/WireGuard/Assets.xcassets/Arrow.imageset/Contents.json b/WireGuard/Assets.xcassets/Arrow.imageset/Contents.json new file mode 100644 index 0000000..77459c6 --- /dev/null +++ b/WireGuard/Assets.xcassets/Arrow.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Arrow.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "preserves-vector-representation" : true + } +} \ No newline at end of file diff --git a/WireGuard/ViewControllers/TunnelsTableViewController.swift b/WireGuard/ViewControllers/TunnelsTableViewController.swift index 37354b0..26932d9 100644 --- a/WireGuard/ViewControllers/TunnelsTableViewController.swift +++ b/WireGuard/ViewControllers/TunnelsTableViewController.swift @@ -188,6 +188,7 @@ extension TunnelsTableViewController: Identifyable {} class TunnelFetchedResultsControllerDelegate: NSObject, FetchedResultsControllerDelegate { private weak var tableView: UITableView? + private var arrowImage: UIImageView? // MARK: - Lifecycle init(tableView: UITableView) { @@ -196,6 +197,7 @@ class TunnelFetchedResultsControllerDelegate: NSObject, FetchedResultsController func fetchedResultsControllerDidPerformFetch(_ controller: FetchedResultsController) { tableView?.reloadData() + updateEmptyIndicator(controller) } func fetchedResultsControllerWillChangeContent(_ controller: FetchedResultsController) { @@ -204,6 +206,7 @@ class TunnelFetchedResultsControllerDelegate: NSObject, FetchedResultsController func fetchedResultsControllerDidChangeContent(_ controller: FetchedResultsController) { tableView?.endUpdates() + updateEmptyIndicator(controller) } func fetchedResultsController(_ controller: FetchedResultsController, didChangeObject change: FetchedResultsObjectChange) { @@ -233,6 +236,23 @@ class TunnelFetchedResultsControllerDelegate: NSObject, FetchedResultsController tableView.deleteSections(IndexSet(integer: index), with: .automatic) } } + + private func updateEmptyIndicator(_ controller: FetchedResultsController) { + guard let tableView = tableView else { return } + if controller.count > 0 { + tableView.backgroundView = nil + arrowImage = nil + } else { + if arrowImage == nil { + let imageView = UIImageView(image: UIImage(named: "Arrow")) + imageView.autoresizingMask = [.flexibleHeight, .flexibleWidth] + imageView.frame = tableView.bounds + imageView.contentMode = .bottomRight + tableView.backgroundView = imageView + arrowImage = imageView + } + } + } } protocol TunnelTableViewCellDelegate: class {