diff --git a/Delta/Base.lproj/Main.storyboard b/Delta/Base.lproj/Main.storyboard index f5f1dc9..b69123d 100644 --- a/Delta/Base.lproj/Main.storyboard +++ b/Delta/Base.lproj/Main.storyboard @@ -46,6 +46,9 @@ + + + diff --git a/Delta/Game Selection/GamesViewController.swift b/Delta/Game Selection/GamesViewController.swift index 70767d2..40dd76e 100644 --- a/Delta/Game Selection/GamesViewController.swift +++ b/Delta/Game Selection/GamesViewController.swift @@ -47,6 +47,7 @@ class GamesViewController: UIViewController private let fetchedResultsController: NSFetchedResultsController private var searchController: RSTSearchController? + private lazy var importController: ImportController = self.makeImportController() private var syncingToastView: RSTToastView? { didSet { @@ -58,6 +59,8 @@ class GamesViewController: UIViewController } private var syncingProgressObservation: NSKeyValueObservation? + @IBOutlet private var importButton: UIBarButtonItem! + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { fatalError("initWithNibName: not implemented") } @@ -132,6 +135,8 @@ extension GamesViewController } } + self.importController.barButtonItem = self.importButton + self.prepareSearchController() self.updateTheme() @@ -358,8 +363,8 @@ private extension GamesViewController /// Importing extension GamesViewController: ImportControllerDelegate { - @IBAction private func importFiles() - { + private func makeImportController() -> ImportController + { var documentTypes = Set(System.registeredSystems.map { $0.gameType.rawValue }) documentTypes.insert(kUTTypeZipArchive as String) documentTypes.insert("com.rileytestut.delta.skin") @@ -379,7 +384,13 @@ extension GamesViewController: ImportControllerDelegate let importController = ImportController(documentTypes: documentTypes) importController.delegate = self importController.importOptions = [itunesImportOption] - self.present(importController, animated: true, completion: nil) + + return importController + } + + @IBAction private func importFiles() + { + self.present(self.importController, animated: true, completion: nil) } func importController(_ importController: ImportController, didImportItemsAt urls: Set, errors: [Error]) diff --git a/Delta/Importing/ImportController.swift b/Delta/Importing/ImportController.swift index e1cc5a9..2370752 100644 --- a/Delta/Importing/ImportController.swift +++ b/Delta/Importing/ImportController.swift @@ -37,6 +37,8 @@ class ImportController: NSObject var delegate: ImportControllerDelegate? var importOptions: [ImportOption]? + var barButtonItem: UIBarButtonItem? + private weak var presentingViewController: UIViewController? // Store presentedViewController separately, since when we dismiss we don't know if it has already been dismissed. @@ -82,6 +84,8 @@ class ImportController: NSObject } alertController.addAction(filesAction) + alertController.popoverPresentationController?.barButtonItem = self.barButtonItem + self.presentedViewController = alertController self.presentingViewController?.present(alertController, animated: true, completion: nil) } @@ -198,7 +202,7 @@ private var ImportControllerKey: UInt8 = 0 extension UIViewController { - fileprivate(set) var importController: ImportController? + fileprivate var importController: ImportController? { set {