Fixes crash when presenting ImportController on iPad

This commit is contained in:
Riley Testut 2022-04-28 12:42:03 -07:00
parent aafe673811
commit 2a4dbabae5
3 changed files with 22 additions and 4 deletions

View File

@ -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>

View File

@ -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,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<URL>, errors: [Error])

View File

@ -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
{