我们有一个例子.
这通过标签栏控制器默认完成.现在,如果我想检查以下情况
如何实现这个逻辑?
我有与以下链接中出现的完全相同的问题
不幸的是,到目前为止我找不到任何解决方案
备注:
1)我正在使用iOS 5和故事板 - 如果有所作为 -
2)我已经尝试过[self.tabBarController.tabBar setSelectedItem:[self.tabBarController.tabBar.items objectAtIndex:3]];,也没用
3)我试图为标签栏设置IBOutlet并直接访问它,但是当我调用[self.myTabbar setSelectedItem:[self.myTabbar.items objectAtIndex:3]];并且出现此错误时应用程序崩溃了:不允许直接修改由标签栏控制器管理的标签栏

我正在使用自定义标签栏图像,中间标签也是自定义图像(很像旧版本的Instagram).
这是我的一些代码:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
[tabBar setBackgroundImage:[UIImage imageNamed:@"CustomTabBar.png"]];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
tabBarItem3.title = nil;
tabBarItem3.image = nil;
[tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"tab-button-selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab-button.png"]];
Run Code Online (Sandbox Code Playgroud)
这很好用,但我有一个问题我无法解决.默认情况下,所选选项卡具有浅灰色背景.这是我想要保留的效果,但不适用于中间选项卡.中间选项卡是一个较大的圆形图像,在选中时会发生变化,但仍会出现灰色背景.
有没有办法删除这个,[tabBar setSelectionIndicatorImage:[[UIImage alloc] init]];但仅限于该选项卡.或者,在应用程序委托中,检测选项卡中的更改并将其删除?
我有3个TabBarItems在UITabBarController:
<UINavigationController: 0xc76a680>
<SplitViewController: 0xc76a170>
<UINavigationController: 0xca5e6f0>
Run Code Online (Sandbox Code Playgroud)
我有这个方法AppDelegate:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
NSLog(@"tab selected index %@",viewController);
if (viewController == nil ) // I NEED TO IMPLEMENT A CHECk HERE
{
//show popup
return NO; //does not change the tab
}
return YES; //does change the tab
}
Run Code Online (Sandbox Code Playgroud)
那么如何检查应该选择的视图控制器是第二个导航控制器?谢谢
我面临一个奇怪的问题.
我有一个UITableView在最初UIViewController的UITabBarController.一开始一切都没问题,但是当我更改标签并返回第一个标签时,标签栏UITableView会隐藏最后一个标签.
我怎样才能解决这个问题?
我目前正在尝试使用UITabBar包含7个tabBar项目的iOS应用程序.
当我使用故事板时,我能够实现所有7 tabBarItems.当我以编程方式添加时tabBarItems,它会强制使用"更多"按钮来访问其他tabBarItems.
有没有办法以编程方式保留所有7个tabBarItems,就像我手动创建时一样UITabBar?

我用来在appdelegate.m中构建uitabbar的代码
self.tabBarController = [[UITabBarController alloc] init];
FirstViewController *firstVC = [[FirstViewController alloc] init];
SecondViewController *secondVC = [[SecondViewController alloc] init];
ThirdViewController *thirdVC = [[ThirdViewController alloc] init];
FourthViewController *fourthVC = [[FourthViewController alloc] init];
FifthViewController *fifthVC = [[FifthViewController alloc] init];
SixthViewController *sixthVC = [[SixthViewController alloc] init];
SeventhViewController *seventhVC = [[SeventhViewController alloc] init];
NSArray *controllers = @[firstVC, secondVC, thirdVC, fourthVC, fifthVC, sixthVC, seventhVC];
self.tabBarController.viewControllers = controllers;
self.window.rootViewController = self.tabBarController;
[_window addSubview:_tabBarController.view];
Run Code Online (Sandbox Code Playgroud) 我试图在iOS 8的UIStoryboard中使用swift创建自定义标签栏控制器(objective-c也没关系).所以,我计划使用这段代码.
let item0: UITabBarItem = UITabBarController().tabBar.items[0] as UITabBarItem
item0.setFinishedSelectedImage(selectedImage0, withFinishedUnselectedImage: unselectedImage0)
Run Code Online (Sandbox Code Playgroud)
但是,问题是setFinishedSelectedImage不再支持,我看到了这个错误.我该如何实施?
从iOS 7及更早版本开始不推荐使用的API在Swift中不可用
我在app delegate中设置了标签栏的颜色:
[[UITabBar appearance] setTintColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)
它工作得很完美,但我还需要单独设置文本颜色.我希望我的图像是红色的,但文字必须是白色.
这有可能吗?
我有一个带有四个标签的标签栏控制器。我想在开始时显示第一项。通过单击第一项(视图)中的按钮,单击该按钮时,我要显示第二个选项卡。我怎样才能做到这一点?
我创建了一个自定义tabbarController类,并尝试给出tabbarindex如下所示的内容。我一开始没有按一下按钮就检查过,但是没有用。它始终加载第一个选项卡栏项目。
class HTabViewController: UITabBarController, UITabBarControllerDelegate {
var controllerArray : [UIViewController] = []
override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.selectedIndex = 2
self.tabBar.tintColor = UIColor.red
// defineViewController()
}
}
Run Code Online (Sandbox Code Playgroud)
注意:单击按钮是否可以显示特定的选项卡项目?
ios ×6
iphone ×4
objective-c ×3
swift ×3
ios8 ×2
uitabbar ×2
xcode ×2
ios5 ×1
ios7 ×1
storyboard ×1
uistoryboard ×1
uitableview ×1