在我的iPhone应用程序中,我有一个带有三个选项卡的公共选项卡,按下按钮后会从多个视图中显示。我遵循的方法是Tweetie应用程序的工作流程,在Robert Conn post中进行了描述。
注意,主控制器是导航控制器;选项卡栏放置在导航堆栈的视图控制器的NIB文件中,选项卡之间的切换效果由委托didSelectItem方法处理。
@interface GameTabBarController : UIViewController<UITabBarDelegate> { UITabBar *tabBar; UITabBarItem *lastGameTabBarItem; UITabBarItem *previousGamesTabBarItem; UITabBarItem *myBetsTabBarItem; NSArray *viewControllers; UIViewController *currentViewController; } @implementation GameTabBarController ... - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { UIViewController *viewController = nil; // Get the view controller linked to the tab bar item pressed ... // Switch to the view [self.currentViewController.view removeFromSuperview]; [self.view addSubview:viewController.view]; self.currentViewController = viewController; } ... @end
由于必须根据应用程序来自的视图控制器自定义选项卡栏的视图,因此我已将此
GameTabBarController
设为具有该选项卡栏的NIB文件的父类。然后,我创建了几个子类:
@interface FirstGameTabBarController : GameTabBarController { ... } @interface SecondGameTabBarController : GameTabBarController { ... } ...
我的问题是,在某些子类中,我想删除与父类关联的NIB文件的第三个选项卡。但是由于不涉及UITabBarController,因此我无法遵循您在网络上可以找到的典型方法,即删除选项卡栏项的视图控制器。
我该怎么做?是否可以删除以前在NIB文件中添加的元素?
谢谢!
UPDATE
解决方案非常简单...我只需要替换选项卡栏项,而不是视图控制器即可:NSMutableArray *items = [NSMutableArray arrayWithArray:self.tabBar.items]; [items removeObjectAtIndex:2]; [self.tabBar setItems:items];
感谢@Praveen S指出正确的方向。
在我的iPhone应用程序中,我有一个公用的标签栏,其中包含三个标签,按下一个按钮后,这些标签会从多个视图中显示。我遵循的方法是Tweetie应用程序的工作流程,...
以下代码提供了解决方案:
Swift 4
这就是Swift 4和5
您可以在班级中保存对该选项卡栏对象的引用,并对其执行所需的操作。