From 8b3d00df1d477a81d2e0efdaba92a64aa4f896f4 Mon Sep 17 00:00:00 2001 From: Tsvetan Raikov Date: Mon, 11 Apr 2016 17:36:20 +0300 Subject: [PATCH] fixed: some transitions in side drawer are not working --- application/application.d.ts | 7 ++++++ application/application.ios.ts | 43 ++++++++++++++++++++++++++++++++-- ui/frame/frame.ios.ts | 1 + 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/application/application.d.ts b/application/application.d.ts index 079e2bad9..1a7105d28 100644 --- a/application/application.d.ts +++ b/application/application.d.ts @@ -579,4 +579,11 @@ declare module "application" { */ removeNotificationObserver(observer: any, notificationName: string): void; } + + /* tslint:disable */ + export interface RootViewControllerImpl { + + contentController: any; + + } } diff --git a/application/application.ios.ts b/application/application.ios.ts index 16e0d86ad..1700b9fca 100644 --- a/application/application.ios.ts +++ b/application/application.ios.ts @@ -13,6 +13,43 @@ class Responder extends UIResponder { // } +class RootViewControllerImpl extends UIViewController implements definition.RootViewControllerImpl { + private _contentController: UIViewController; + + get contentController(): UIViewController { + return this._contentController; + } + + set contentController(contentController: UIViewController) { + + if (contentController.parentViewController !== null) { + contentController.willMoveToParentViewController(null); + contentController.view.removeFromSuperview(); + contentController.removeFromParentViewController(); + contentController.didMoveToParentViewController(this); + } + + if (this._contentController) { + this._contentController.willMoveToParentViewController(null); + this._contentController.view.removeFromSuperview(); + this._contentController.removeFromParentViewController(); + } + + this.addChildViewController(contentController); + this.view.addSubview(contentController.view); + contentController.view.frame = this.view.bounds; + contentController.view.autoresizingMask = UIViewAutoresizing.UIViewAutoresizingFlexibleWidth | UIViewAutoresizing.UIViewAutoresizingFlexibleHeight; + + this._contentController = contentController; + this._contentController.didMoveToParentViewController(this); + } + + public viewDidLoad(): void { + super.viewDidLoad(); + this.view.backgroundColor = UIColor.whiteColor(); + } +} + class Window extends UIWindow { private _content; @@ -140,11 +177,13 @@ class IOSApplication implements definition.iOSApplication { rootView = frame; } - + this._window.content = rootView; if (rootView instanceof Frame) { - this.rootController = this._window.rootViewController = rootView.ios.controller; + let rootController = new RootViewControllerImpl(); + this.rootController = this._window.rootViewController = rootController; + rootController.contentController = rootView.ios.controller; } else if (rootView.ios instanceof UIViewController) { this.rootController = this._window.rootViewController = rootView.ios; diff --git a/ui/frame/frame.ios.ts b/ui/frame/frame.ios.ts index 8f142cc62..56a028302 100644 --- a/ui/frame/frame.ios.ts +++ b/ui/frame/frame.ios.ts @@ -430,6 +430,7 @@ class UINavigationControllerImpl extends UINavigationController { } public viewDidLoad(): void { + super.viewDidLoad(); let owner = this._owner.get(); if (owner) { owner.onLoaded();