From ffc0843c187bf6bd04ce5505be099e00d423f872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Mon, 23 Feb 2026 21:55:56 +0100 Subject: [PATCH] fix(ios): fix containment issues once and for all --- iphone/Classes/TiUINavigationWindowProxy.m | 29 +++--------------- iphone/Classes/TiUITabGroup.m | 6 ++-- iphone/Classes/TiUITabGroupProxy.m | 34 +++------------------- 3 files changed, 12 insertions(+), 57 deletions(-) diff --git a/iphone/Classes/TiUINavigationWindowProxy.m b/iphone/Classes/TiUINavigationWindowProxy.m index e393e3b4d36..c29c8f551b7 100644 --- a/iphone/Classes/TiUINavigationWindowProxy.m +++ b/iphone/Classes/TiUINavigationWindowProxy.m @@ -397,34 +397,13 @@ - (void)viewWillAppear:(BOOL)animated { if (navController && [self viewAttached]) { UIViewController *parentController = [self windowHoldingController]; - [parentController addChildViewController:navController]; - [navController didMoveToParentViewController:parentController]; - [navController viewWillAppear:animated]; + if (navController.parentViewController != parentController) { + [parentController addChildViewController:navController]; + [navController didMoveToParentViewController:parentController]; + } } [super viewWillAppear:animated]; } -- (void)viewWillDisappear:(BOOL)animated -{ - if ([self viewAttached]) { - [navController viewWillDisappear:animated]; - } - [super viewWillDisappear:animated]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - if ([self viewAttached]) { - [navController viewDidAppear:animated]; - } - [super viewDidAppear:animated]; -} -- (void)viewDidDisappear:(BOOL)animated -{ - if ([self viewAttached]) { - [navController viewDidDisappear:animated]; - } - [super viewDidDisappear:animated]; -} - (BOOL)homeIndicatorAutoHide { diff --git a/iphone/Classes/TiUITabGroup.m b/iphone/Classes/TiUITabGroup.m index 287932df112..6b61a1ae52f 100644 --- a/iphone/Classes/TiUITabGroup.m +++ b/iphone/Classes/TiUITabGroup.m @@ -701,10 +701,12 @@ - (void)open:(id)args ^{ isTabBarHidden = NO; UIViewController *parentController = TiApp.controller.topPresentedController; - [parentController addChildViewController:self.tabController]; + if (self.tabController.parentViewController != parentController) { + [parentController addChildViewController:self.tabController]; + [self.tabController didMoveToParentViewController:parentController]; + } [self addSubview:self.tabController.view]; self.tabController.view.frame = self.bounds; - [self.tabController didMoveToParentViewController:parentController]; }, NO); } diff --git a/iphone/Classes/TiUITabGroupProxy.m b/iphone/Classes/TiUITabGroupProxy.m index e3d3412dcbb..efdbf1f3c88 100644 --- a/iphone/Classes/TiUITabGroupProxy.m +++ b/iphone/Classes/TiUITabGroupProxy.m @@ -228,40 +228,14 @@ - (void)viewWillAppear:(BOOL)animated; if ([self viewAttached]) { UITabBarController *tabController = [(TiUITabGroup *)[self view] tabController]; UIViewController *parentController = [self windowHoldingController]; - [parentController addChildViewController:tabController]; - [tabController didMoveToParentViewController:parentController]; - [tabController viewWillAppear:animated]; + if (tabController.parentViewController != parentController) { + [parentController addChildViewController:tabController]; + [tabController didMoveToParentViewController:parentController]; + } } [super viewWillAppear:animated]; } -- (void)viewDidAppear:(BOOL)animated; -{ - if ([self viewAttached]) { - UITabBarController *tabController = [(TiUITabGroup *)[self view] tabController]; - [tabController viewDidAppear:animated]; - } - [super viewDidAppear:animated]; -} - -- (void)viewWillDisappear:(BOOL)animated; -{ - if ([self viewAttached]) { - UITabBarController *tabController = [(TiUITabGroup *)[self view] tabController]; - [tabController viewWillDisappear:animated]; - } - [super viewWillDisappear:animated]; -} - -- (void)viewDidDisappear:(BOOL)animated; -{ - if ([self viewAttached]) { - UITabBarController *tabController = [(TiUITabGroup *)[self view] tabController]; - [tabController viewDidDisappear:animated]; - } - [super viewDidDisappear:animated]; -} - - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { if ([self viewAttached]) {