Skip to content

Commit 6fb4530

Browse files
author
Thomas Roovers
committed
Made upmost and root viewcontrollers optional
1 parent 70e767b commit 6fb4530

File tree

6 files changed

+47
-8
lines changed

6 files changed

+47
-8
lines changed

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Einsteinium.podspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22

33
s.name = "Einsteinium"
4-
s.version = "1.2.4"
4+
s.version = "1.3.0"
55
s.author = { "Bas van Kuijck" => "[email protected]" }
66
s.license = { :type => "MIT", :file => "LICENSE" }
77
s.homepage = "http://www.e-sites.nl"
@@ -10,4 +10,5 @@ Pod::Spec.new do |s|
1010
s.source_files = "Sources/**/*.{h,swift}"
1111
s.platform = :ios, '9.0'
1212
s.requires_arc = true
13+
s.dependency 'Logging'
1314
end

Package.resolved

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@ let package = Package(
1010
.library(name: "Einsteinium", targets: ["Einsteinium"])
1111
],
1212
dependencies: [
13+
.package(url: "https://github.com/apple/swift-log.git", from: "1.0.0"),
1314
],
1415
targets: [
1516
.target(
1617
name: "Einsteinium",
17-
dependencies: [ ],
18+
dependencies: [
19+
"Logging"
20+
],
1821
path: "Sources"
1922
)
2023
]

Sources/Logging.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Logging.swift
3+
// Created by Thomas Roovers on 16/12/2021.
4+
//
5+
6+
import Logging
7+
8+
let logger = Logger(label: "einsteinium")

Sources/UIKit/UIViewController.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88

99
import Foundation
1010
import UIKit
11+
import Logging
1112

1213
extension UIViewController {
13-
public class var upmost: UIViewController {
14+
public class var upmost: UIViewController? {
1415
var viewController = root
1516
while true {
16-
if let pres = viewController.presentedViewController, pres.isBeingDismissed == false {
17-
viewController = pres
17+
if let presentedViewController = viewController?.presentedViewController, presentedViewController.isBeingDismissed == false {
18+
viewController = presentedViewController
1819
} else {
1920
break
2021
}
@@ -23,14 +24,17 @@ extension UIViewController {
2324
return viewController
2425
}
2526

26-
public class var root: UIViewController {
27+
public class var root: UIViewController? {
2728
guard let window = UIApplication.shared.keyWindow else {
28-
preconditionFailure("No keyWindow")
29+
logger.error("No keyWindow")
30+
return nil
2931
}
3032

3133
guard let viewController = window.rootViewController else {
32-
preconditionFailure("No rootViewController")
34+
logger.error("No rootViewController")
35+
return nil
3336
}
37+
3438
return viewController
3539
}
3640
}

0 commit comments

Comments
 (0)