diff --git a/ui/tab-view/tab-view-common.ts b/ui/tab-view/tab-view-common.ts index c174e0810..15b2f1c3a 100644 --- a/ui/tab-view/tab-view-common.ts +++ b/ui/tab-view/tab-view-common.ts @@ -150,7 +150,21 @@ export class TabView extends view.View implements definition.TabView, view.AddAr } public _removeTabs(oldItems: Array) { - // + var i: number; + var length = oldItems.length; + var oldItem: definition.TabViewItem; + for (i = 0; i < length; i++) { + oldItem = oldItems[i]; + + if (!oldItem) { + throw new Error("TabViewItem at index " + i + " is undefined."); + } + + if (!oldItem.view) { + throw new Error("TabViewItem at index " + i + " does not have a view."); + } + this._removeView(oldItem.view); + } } public _addTabs(newItems: Array) { diff --git a/ui/tab-view/tab-view.android.ts b/ui/tab-view/tab-view.android.ts index 998f83eb9..37a6b6fa9 100644 --- a/ui/tab-view/tab-view.android.ts +++ b/ui/tab-view/tab-view.android.ts @@ -225,8 +225,11 @@ export class TabView extends common.TabView { if (data.oldValue) { var oldItems: Array = data.oldValue; - oldItems.forEach((oldItem) => { oldItem._parent = null; }); - + oldItems.forEach((oldItem) => { + // _removeView is called within destroyItem method + oldItem._parent = null; + }); + this._viewPager.setAdapter(null); this._pagerAdapter = null; this._tabLayout.setItems(null, null); diff --git a/ui/tab-view/tab-view.ios.ts b/ui/tab-view/tab-view.ios.ts index ad414d999..3f5dedce1 100644 --- a/ui/tab-view/tab-view.ios.ts +++ b/ui/tab-view/tab-view.ios.ts @@ -173,7 +173,6 @@ export class TabView extends common.TabView { oldItem = oldItems[i]; oldItem._parent = null; oldItem._controller = null; - this._removeView(oldItem.view); } this._ios.viewControllers = null;