繁体   English   中英

将控制器添加到UITabBarController,而标签栏中没有出现新项目

[英]Add controller to UITabBarController without new item appearing in the tab bar

我有一个UITabBarController作为其主控制器的应用程序。

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

我试图将tabBarController.selectedViewController属性设置为不在tabBarController.viewControllers数组中的视图控制器,但没有任何反应。 如果我将视图控制器添加到tabBarController.viewControllers数组,则新项目将自动显示在选项卡栏中。

更新

感谢Levi,我扩展了我的标签栏控制器来处理.viewControllers中没有的控制器。

@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

代码将正确设置“外部”控制器的视图大小,并在用户在选项卡栏中选择项目时将其删除。

您可以按下它(如果您有导航控制器),也可以将其视图添加到可见的View Controller视图中,并将其添加为子视图控制器。

您可以使用以下内容显示新视图控制器:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;

或者,如果你的一个UIViewControllersUINavigationController ,你可以:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM