From 056d0bf9e4d6cfb4a5066371ffcfb39dc79d6b2e Mon Sep 17 00:00:00 2001 From: Alexander Djenkov Date: Fri, 2 Aug 2019 09:46:09 +0300 Subject: [PATCH] fix(bottom-navigation): codebehind creation (#7624) does not show tabstrip --- .../ui/bottom-navigation/bottom-navigation.ios.ts | 14 ++++++++++++-- .../tab-navigation-base/tab-navigation-base.ts | 12 +++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tns-core-modules/ui/bottom-navigation/bottom-navigation.ios.ts b/tns-core-modules/ui/bottom-navigation/bottom-navigation.ios.ts index 2a83075062..71bc0ab0d3 100644 --- a/tns-core-modules/ui/bottom-navigation/bottom-navigation.ios.ts +++ b/tns-core-modules/ui/bottom-navigation/bottom-navigation.ios.ts @@ -1,10 +1,11 @@ // Types +import { TabStrip } from "../tab-navigation-base/tab-strip"; import { TabContentItem } from "../tab-navigation-base/tab-content-item"; import { TabStripItem } from "../tab-navigation-base/tab-strip-item"; import { TextTransform } from "../text-base"; //Requires -import { TabNavigationBase, itemsProperty, selectedIndexProperty } from "../tab-navigation-base/tab-navigation-base"; +import { TabNavigationBase, itemsProperty, selectedIndexProperty, tabStripProperty } from "../tab-navigation-base/tab-navigation-base"; import { Font } from "../styling/font"; import { getTransformedText } from "../text-base"; import { Frame } from "../frame"; @@ -137,7 +138,7 @@ class UITabBarControllerDelegateImpl extends NSObject implements UITabBarControl if (tabStripItems[position]) { tabStripItems[position]._emit(TabStripItem.selectEvent); } - + if (tabStripItems[prevPosition]) { tabStripItems[prevPosition]._emit(TabStripItem.unselectEvent); } @@ -610,6 +611,15 @@ export class BottomNavigation extends TabNavigationBase { this.setViewControllers(value); selectedIndexProperty.coerce(this); } + + [tabStripProperty.getDefault](): TabStrip { + return null; + } + + [tabStripProperty.setNative](value: TabStrip) { + this.setViewControllers(this.items); + selectedIndexProperty.coerce(this); + } } interface TabStates { diff --git a/tns-core-modules/ui/tab-navigation-base/tab-navigation-base/tab-navigation-base.ts b/tns-core-modules/ui/tab-navigation-base/tab-navigation-base/tab-navigation-base.ts index 34782b3cea..599a6771ab 100644 --- a/tns-core-modules/ui/tab-navigation-base/tab-navigation-base/tab-navigation-base.ts +++ b/tns-core-modules/ui/tab-navigation-base/tab-navigation-base/tab-navigation-base.ts @@ -37,8 +37,8 @@ export class TabNavigationBase extends View implements TabNavigationBaseDefiniti this._addView(value); // selectedIndexProperty.coerce(this); } else if (name === "TabStrip") { + // Setting tabStrip will trigger onTabStripChanged this.tabStrip = value; - this._addView(value); } } @@ -94,14 +94,12 @@ export class TabNavigationBase extends View implements TabNavigationBaseDefiniti } public onTabStripChanged(oldTabStrip: TabStrip, newTabStrip: TabStrip) { - if (oldTabStrip && oldTabStrip.items && oldTabStrip.items.length) { - oldTabStrip.items.forEach(item => this._removeView(item)); + if (oldTabStrip && oldTabStrip.parent) { + this._removeView(oldTabStrip); } - if (newTabStrip && newTabStrip.items && newTabStrip.items.length) { - newTabStrip.items.forEach(item => { - this._addView(item); - }); + if (newTabStrip) { + this._addView(newTabStrip); } }