@@ -39,10 +39,20 @@ public final class AirshipEmbeddedViewWrapper: UIView {
3939
4040 public override func didMoveToWindow( ) {
4141 super. didMoveToWindow ( )
42- guard !self . isAdded else { return }
43- self . viewController. willMove ( toParent: self . parentViewController ( ) )
44- self . parentViewController ( ) . addChild ( self . viewController)
45- self . viewController. didMove ( toParent: self . parentViewController ( ) )
42+
43+ if self . window == nil {
44+ if self . isAdded {
45+ self . viewController. willMove ( toParent: nil )
46+ self . viewController. removeFromParent ( )
47+ self . isAdded = false
48+ }
49+ return
50+ }
51+
52+ guard !self . isAdded, let parentVC = self . parentViewController ( ) else { return }
53+ self . viewController. willMove ( toParent: parentVC)
54+ parentVC. addChild ( self . viewController)
55+ self . viewController. didMove ( toParent: parentVC)
4656 self . viewController. view. isUserInteractionEnabled = true
4757 isAdded = true
4858 }
@@ -53,18 +63,16 @@ public final class AirshipEmbeddedViewWrapper: UIView {
5363 }
5464}
5565
56- extension UIView
57- {
58- //Get Parent View Controller from any view
59- func parentViewController( ) -> UIViewController {
66+ extension UIView {
67+ func parentViewController( ) -> UIViewController ? {
6068 var responder : UIResponder ? = self
61- while !( responder is UIViewController ) {
62- responder = responder? . next
63- if nil == responder {
64- break
69+ while let r = responder {
70+ if let vc = r as? UIViewController {
71+ return vc
6572 }
73+ responder = r. next
6674 }
67- return ( responder as? UIViewController ) !
75+ return nil
6876 }
6977}
7078
0 commit comments