gpt4 book ai didi

ios - 从它的一个 UINavigationControllers 中解散 TabBarController 并从呈现 TabBarController 的地方返回到 Controller

转载 作者:行者123 更新时间:2023-11-29 12:57:59 26 4
gpt4 key购买 nike

我正在呈现来自另一个 ViewController (HomeViewController) 的 UITabBarControllerTabBarController 又包含 UINavigationControllers。但是,当用户从其中一个导航 Controller 按下主页按钮时,他需要转到显示 TabBarController 的原始 ViewController

**tabBarController 不是我窗口的 rootViewController。

这是我的代码。

AppDelegate 中,我正在创建和配置我的 TabBarController

self.custCareVC = [[CustomerCareViewController alloc] initWithNibName:@"CustomerCareViewController_iPhone" bundle:NULL];
self.POController = [[PurchaeOrderViewController alloc] initWithNibName:@"PurchaeOrderViewController_iPhone" bundle:NULL];
self.accAndContactsController = [[AccountsAndContactsViewController alloc] initWithNibName:@"AccountsAndContactsViewController_iPhone" bundle:NULL];

self.customerCareNavController = [[UINavigationController alloc] initWithRootViewController:self.custCareVC];
self.customerCareNavController.title = @"Customer Service";

self.purchaseOrderNavController = [[UINavigationController alloc] initWithRootViewController:self.POController];
self.purchaseOrderNavController.title = @"PO";

self.accAndContactsNavController = [[UINavigationController alloc] initWithRootViewController:self.accAndContactsController];
self.accAndContactsNavController.title = @"Accounts And Contacts";

self.tabBarController = [[UITabBarController alloc] init];

//self.tabBarController.tabBar.backgroundImage = [UIImage imageNamed:@"bluehead.png"];

self.tabBarController.viewControllers = [NSArray arrayWithObjects:self.customerCareNavController, self.accAndContactsNavController, self.purchaseOrderNavController, nil];

在我的 HomePageViewController 中,我通过以下方式呈现它(单击按钮):

AppDelegate *appDel = [[UIApplication sharedApplication] delegate];
appDel.tabBarController.delegate = self;
[self presentViewController:appDel.tabBarController animated:YES completion:NULL];

现在我需要在用户按下任何导航 Controller (存在于 tabBarController 中)上的按钮后关闭我的 tabBarController 并再次显示 HomeViewController..!!

最佳答案

您需要在您的目标 Controller 中创建一个函数(它有权关闭 tabBarController)并从您当前正在与之交互的最顶层(当前) Controller / Controller 调用该函数。要实现上述目标,您需要首先使用父 View Controller 从当前 Controller 获取 tabBarController 对象。然后获取该 Controller 的父 View / Root View Controller 和您在第一个 Controller 中创建的 performSelector (函数)。

在调用 performSelector 之前一定要检查 doesRespondToSelector 以避免任何严重的崩溃。

另一种方式,虽然很 hackie 是在 AppDelegate 中存储第一个 Controller 的弱引用,并从您当前的 Controller 访问它。

关于ios - 从它的一个 UINavigationControllers 中解散 TabBarController 并从呈现 TabBarController 的地方返回到 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com