Fixes crash when presenting ImportController on iPad
This commit is contained in:
parent
aafe673811
commit
2a4dbabae5
@ -46,6 +46,9 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</barButtonItem>
|
</barButtonItem>
|
||||||
</navigationItem>
|
</navigationItem>
|
||||||
|
<connections>
|
||||||
|
<outlet property="importButton" destination="FeA-O5-xd2" id="A44-3S-Okz"/>
|
||||||
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="JYx-xE-nis" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="JYx-xE-nis" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
|
|||||||
@ -47,6 +47,7 @@ class GamesViewController: UIViewController
|
|||||||
private let fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult>
|
private let fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult>
|
||||||
|
|
||||||
private var searchController: RSTSearchController?
|
private var searchController: RSTSearchController?
|
||||||
|
private lazy var importController: ImportController = self.makeImportController()
|
||||||
|
|
||||||
private var syncingToastView: RSTToastView? {
|
private var syncingToastView: RSTToastView? {
|
||||||
didSet {
|
didSet {
|
||||||
@ -58,6 +59,8 @@ class GamesViewController: UIViewController
|
|||||||
}
|
}
|
||||||
private var syncingProgressObservation: NSKeyValueObservation?
|
private var syncingProgressObservation: NSKeyValueObservation?
|
||||||
|
|
||||||
|
@IBOutlet private var importButton: UIBarButtonItem!
|
||||||
|
|
||||||
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||||
fatalError("initWithNibName: not implemented")
|
fatalError("initWithNibName: not implemented")
|
||||||
}
|
}
|
||||||
@ -132,6 +135,8 @@ extension GamesViewController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.importController.barButtonItem = self.importButton
|
||||||
|
|
||||||
self.prepareSearchController()
|
self.prepareSearchController()
|
||||||
|
|
||||||
self.updateTheme()
|
self.updateTheme()
|
||||||
@ -358,7 +363,7 @@ private extension GamesViewController
|
|||||||
/// Importing
|
/// Importing
|
||||||
extension GamesViewController: ImportControllerDelegate
|
extension GamesViewController: ImportControllerDelegate
|
||||||
{
|
{
|
||||||
@IBAction private func importFiles()
|
private func makeImportController() -> ImportController
|
||||||
{
|
{
|
||||||
var documentTypes = Set(System.registeredSystems.map { $0.gameType.rawValue })
|
var documentTypes = Set(System.registeredSystems.map { $0.gameType.rawValue })
|
||||||
documentTypes.insert(kUTTypeZipArchive as String)
|
documentTypes.insert(kUTTypeZipArchive as String)
|
||||||
@ -379,7 +384,13 @@ extension GamesViewController: ImportControllerDelegate
|
|||||||
let importController = ImportController(documentTypes: documentTypes)
|
let importController = ImportController(documentTypes: documentTypes)
|
||||||
importController.delegate = self
|
importController.delegate = self
|
||||||
importController.importOptions = [itunesImportOption]
|
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])
|
func importController(_ importController: ImportController, didImportItemsAt urls: Set<URL>, errors: [Error])
|
||||||
|
|||||||
@ -37,6 +37,8 @@ class ImportController: NSObject
|
|||||||
var delegate: ImportControllerDelegate?
|
var delegate: ImportControllerDelegate?
|
||||||
var importOptions: [ImportOption]?
|
var importOptions: [ImportOption]?
|
||||||
|
|
||||||
|
var barButtonItem: UIBarButtonItem?
|
||||||
|
|
||||||
private weak var presentingViewController: UIViewController?
|
private weak var presentingViewController: UIViewController?
|
||||||
|
|
||||||
// Store presentedViewController separately, since when we dismiss we don't know if it has already been dismissed.
|
// 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.addAction(filesAction)
|
||||||
|
|
||||||
|
alertController.popoverPresentationController?.barButtonItem = self.barButtonItem
|
||||||
|
|
||||||
self.presentedViewController = alertController
|
self.presentedViewController = alertController
|
||||||
self.presentingViewController?.present(alertController, animated: true, completion: nil)
|
self.presentingViewController?.present(alertController, animated: true, completion: nil)
|
||||||
}
|
}
|
||||||
@ -198,7 +202,7 @@ private var ImportControllerKey: UInt8 = 0
|
|||||||
|
|
||||||
extension UIViewController
|
extension UIViewController
|
||||||
{
|
{
|
||||||
fileprivate(set) var importController: ImportController?
|
fileprivate var importController: ImportController?
|
||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user