Fixes crash when presenting ImportController on iPad
This commit is contained in:
parent
aafe673811
commit
2a4dbabae5
@ -46,6 +46,9 @@
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</navigationItem>
|
||||
<connections>
|
||||
<outlet property="importButton" destination="FeA-O5-xd2" id="A44-3S-Okz"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="JYx-xE-nis" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
|
||||
@ -47,6 +47,7 @@ class GamesViewController: UIViewController
|
||||
private let fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult>
|
||||
|
||||
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,7 +363,7 @@ 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)
|
||||
@ -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<URL>, errors: [Error])
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user