目前我有一个UITabBarController,上面有4个项目,都有关联的视图控制器。我想添加一个第五个标签栏项目,它不会转到新的视图控制器,而是在Safari中启动一个网站。从本质上讲,它就像一个UIButton。
所以行为将是:
用户在标签1上。
用户点击标签5(标签5立即变为蓝色)
视图不会改变。
网站在Safari中打开(我知道如何做这部分)
当用户返回应用程序时,它们仍然位于选项卡1上(选项卡1为蓝色)
有什么想法吗?
目前我的UITabBarController设置如下(其中localControllerArray是一个包含4个UINavigationControllers的数组):
tabBarController.viewControllers = localControllersArray;
[localControllersArray release];
[self.window setRootViewController:tabBarController];
[tabBarController release];
答案 0 :(得分:2)
您知道UITTabBarController
如何拥有委托属性吗?创建一个实现UITabBarControllerDelegate
协议的对象,并将其设置为委托。然后,当您选择任何选项卡时,将调用委托的tabBarController:didSelectViewController:。在其中,您可以检查您的第5个标签是否被点击。在这种情况下,只需将tabbarcontroller的selectedIndex
属性设置为您想要的。就是这样。
PS,实际上你只需要调用tabBarController:shouldSelectViewController: ,这样视图就不会切换。
答案 1 :(得分:0)
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
switch(mytabbar.selectedIndex)
{
case 0:
[imageView1 setImage:[UIImage imageNamed:@"Tab1_sel.png"]];
[imageView2 setImage:[UIImage imageNamed:@"Tab2.png"]];
[imageView3 setImage:[UIImage imageNamed:@"Tab3.png"]];
[imageView4 setImage:[UIImage imageNamed:@"Tab4.png"]];
[imageView5 setImage:[UIImage imageNamed:@"Tab5.png"]];
break;
case 1:
它为我工作尝试...把它放在appdelegate方法中。