iPhone子选项卡 - 导航

时间:2012-10-18 21:21:56

标签: iphone design-patterns user-interface tabs

我正在为iPhone应用程序设计UI,我们将在底部有一个标准的4个标签栏。我们正在考虑以上下文方式使用相同的标签栏,这样当您点按搜索结果时,底部的选项将更改为与按下的项目相关联。

这种做事方式是否代表了巨大的可用性问题,或者如果我们对执行情况保持一致,这是否可以呢?

屏幕1选项卡导航底部:A B C D:

- 点击搜索结果

- 新页面聚焦于结果的详细视图

屏幕2选项卡横跨底部导航:E F G H:

1 个答案:

答案 0 :(得分:0)

不可能在同一个tabBar上执行此操作,您可以隐藏tabBar并显示另一个带有所需项目的tabBar,您可以使用以下方法隐藏/显示tabBar:

- (void)hideTabBar:(UITabBarController *) tabbarcontroller
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];

    for(UIView *view in tabbarcontroller.view.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
        } 
        else 
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
        }
    }

    [UIView commitAnimations];   
}

- (void)showTabBar:(UITabBarController *) tabbarcontroller
{       
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    for(UIView *view in tabbarcontroller.view.subviews)
    {
        NSLog(@"%@", view);

        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];

        } 
        else 
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
        }
    }

    [UIView commitAnimations]; 
}

您可以使用以下方法:

[self hideTabBar:self.tabBarController];
[self showTabBar:self.tabBarController];

隐藏tabBar时,启动一个新的tabBar并将其添加到视图中。