从UITabBarController打开一个网站

时间:2012-03-31 03:14:28

标签: iphone uitabbarcontroller

目前我有一个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];

2 个答案:

答案 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方法中。