FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix-next: drawer plugin viewcontroller init (#6379) · NativeScript/NativeScript@d91bfd8 · GitHub

Commit d91bfd8

Browse files
authored
fix-next: drawer plugin viewcontroller init (#6379)
1 parent b2246ad commit d91bfd8

1 file changed

Lines changed: 20 additions & 9 deletions

File tree

‎tns-core-modules/application/application.ios.ts‎

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ class IOSApplication implements IOSApplicationDefinition {
227227
this._rootView._onRootViewReset();
228228
}
229229
const rootView = createRootView(view);
230+
const controller = getViewController(rootView);
231+
230232
this._rootView = rootView;
231233

232234
if (createRootFrame.value) {
@@ -236,7 +238,7 @@ class IOSApplication implements IOSApplicationDefinition {
236238
// setup view as styleScopeHost
237239
rootView._setupAsRootView({});
238240
}
239-
const controller = getViewController(rootView);
241+
setViewControllerView(rootView);
240242
const haveController = this._window.rootViewController !== null;
241243
this._window.rootViewController = controller;
242244
if (!haveController) {
@@ -339,16 +341,25 @@ function getViewController(view: View): UIViewController {
339341
if (viewController instanceof UIViewController) {
340342
return viewController;
341343
} else {
342-
const nativeView = view.ios || view.nativeViewProtected;
343-
if (nativeView instanceof UIView) {
344-
viewController = iosView.UILayoutViewController.initWithOwner(new WeakRef(view)) as UIViewController;
345-
viewController.view.addSubview(nativeView);
346-
view.viewController = viewController;
347-
return viewController;
348-
}
344+
// We set UILayoutViewController dynamically to the root view if it doesn't have a view controller
345+
// At the moment the root view doesn't have its native view created. We set it in the setViewControllerView func
346+
viewController = iosView.UILayoutViewController.initWithOwner(new WeakRef(view)) as UIViewController;
347+
view.viewController = viewController;
348+
return viewController;
349349
}
350+
}
351+
352+
function setViewControllerView(view: View): void {
353+
const viewController: UIViewController = view.viewController || view.ios;
354+
const nativeView = view.ios || view.nativeViewProtected;
350355

351-
throw new Error("Root should be either UIViewController or UIView");
356+
if (!nativeView || !viewController) {
357+
throw new Error("Root should be either UIViewController or UIView");
358+
}
359+
360+
if (viewController instanceof iosView.UILayoutViewController) {
361+
viewController.view.addSubview(nativeView);
362+
}
352363
}
353364

354365
global.__onLiveSync = function () {

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL