繁体   English   中英

iOS-选择选项卡时的“后退”按钮

[英]iOS - Back button on selecting a tab

我有一个UITabBarController。 当我选择第一个选项卡之外的其他选项卡时,我希望隐藏选项卡栏(这是通过hidesBottomBarWhenPushed实现的)和导航栏具有后退按钮(不是普通按钮,而是默认的带箭头的按钮)(以进入第一个选项卡)。 我该如何实现?

我将在下面回答您的问题,但是我不得不说这是一个非常不标准的用户界面,混合了隐喻。 如果您确实要推送到其他视图控制器,则实际上应该使用选项卡栏。 您可能应该只具有简单的按钮即可转到辅助视图控制器。 我也不会感到惊讶,如果苹果将拒绝使用像你受孕的方式标签栏的应用程序。

无论如何,要回答您的问题,您不想尝试在辅助视图中添加“后退”按钮,而只是想正确实现导航控制器。 然后,当您按下辅助视图时,将自动获得后退按钮。 而且,您也不必担心与隐藏选项卡栏相关的愚蠢行为,因为当您推送到另一个视图时,它也会被关闭。

因此,考虑这个例子,你有按钮“一”标签栏,“二”和“三”。 但是,不是正确的选项卡栏控制器配置,而是类似这样的情况,其中“一个”位于导航控制器上,并具有简单的选项卡栏用户界面控件,如果您碰巧点击第二个或第三个标签,它将仅推送至相应的视图。 因此,从逻辑上讲,它可能看起来像这样(即使您不使用情节提要,这也可能有助于可视化潜在的配置):

示例情节提要

因此,主视图控制器(“1”),你会添加有一个标签栏IBOutlet

@property (weak, nonatomic) IBOutlet UITabBar *tabBar;

然后,我将在viewDidLoad配置该选项卡栏,例如:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tabBar.delegate = self;
    self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:0];
}

显然,视图控制器本身需要是一个UITabBarDelegate ,并且您需要一个didSelectItem来执行推送选择或将您的navigationController用作pushViewController 并且,很明显,您将希望使用在标签栏按钮上放置的实际标签将对@"Two"@"Three"的引用更改为,但是希望这可以为您带来想法:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if ([item.title isEqualToString:@"Two"])
    {
        // put code for pushing to second view controller here
    }
    if ([item.title isEqualToString:@"Three"])
    {
        // put code for pushing to third view controller here
    }
}

我还希望主视图控制器确保在弹出后重新出现时将所选项目设置回第一项:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:0];
}

无论如何,如果以这种方式进行操作,则标签栏不会被隐藏(因为它不再是控制器,而只是第一个标签上的用户界面元素)。 这可能是实现所需用户界面的最简单方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM