gpt4 book ai didi

ios - 将 Controller 添加到 UITabBarController 而没有新项目出现在选项卡栏中

转载 作者:可可西里 更新时间:2023-11-01 04:47:27 25 4
gpt4 key购买 nike

我有一个以 UITabBarController 作为主 Controller 的应用程序。

当用户点击一个按钮(不是在标签栏中,只是其他按钮)时,我想在我的 UITabBarController 中添加新的 UIViewController 并显示它,但我不希望新的 UITabBarItem 出现在标签栏中。如何实现这种行为?

我尝试将 tabBarController.selectedViewController 属性设置为不在 tabBarController.viewControllers 数组中的 View Controller ,但没有任何反应。如果我将 View Controller 添加到 tabBarController.viewControllers 数组,新项目会自动出现在标签栏中。

更新

感谢 Levi,我扩展了我的标签栏 Controller 以处理 .viewControllers 中不存在的 Controller 。

@interface MainTabBarController : UITabBarController

/**
* By setting this property, tab bar controller will display
* given controller as it was added to the viewControllers and activated
* but icon will not appear in the tab bar.
*/
@property (strong, nonatomic) UIViewController *foreignController;

@end


#import "MainTabBarController.h"

@implementation MainTabBarController

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
self.foreignController = nil;
}

- (void)setForeignController:(UIViewController *)foreignController
{
if (foreignController) {
CGFloat reducedHeight = foreignController.view.frame.size.height - self.tabBar.frame.size.height;
foreignController.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, reducedHeight);

[self addChildViewController:foreignController];
[self.view addSubview:foreignController.view];
} else {
[_foreignController.view removeFromSuperview];
[_foreignController removeFromParentViewController];
}

_foreignController = foreignController;
}

@end

该代码将正确设置“外部” Controller 的 View 大小,并在用户选择标签栏中的项目时将其删除。

最佳答案

您要么推送它(如果您有导航 Controller ),要么将它的 View 添加到您的可见 View Controller 的 View 中,并将它也添加为 subview Controller 。

关于ios - 将 Controller 添加到 UITabBarController 而没有新项目出现在选项卡栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851376/

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