Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-选择选项卡时的后退按钮_Ios_Uinavigationcontroller_Tabs - Fatal编程技术网

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

iOS-选择选项卡时的后退按钮,ios,uinavigationcontroller,tabs,Ios,Uinavigationcontroller,Tabs,我有一个超宽带控制器。当我选择第一个选项卡以外的选项卡时,我希望选项卡栏隐藏(我在按下时通过HidesBottomBar实现),导航栏有一个后退按钮(不是普通按钮,而是默认箭头)(以进入第一个选项卡)。我如何做到这一点?我将在下面回答你的问题,但我必须说,这是一个非常非标准的用户界面,混合了隐喻。如果确实要推送到不同的视图控制器,则不应使用选项卡栏。您可能只需要使用简单的按钮即可转到辅助视图控制器。如果苹果拒绝使用标签栏的应用程序,就像你想象的那样,我不会感到惊讶 无论如何,要回答您的问题,您不

我有一个超宽带控制器。当我选择第一个选项卡以外的选项卡时,我希望选项卡栏隐藏(我在按下时通过HidesBottomBar实现),导航栏有一个后退按钮(不是普通按钮,而是默认箭头)(以进入第一个选项卡)。我如何做到这一点?

我将在下面回答你的问题,但我必须说,这是一个非常非标准的用户界面,混合了隐喻。如果确实要推送到不同的视图控制器,则不应使用选项卡栏。您可能只需要使用简单的按钮即可转到辅助视图控制器。如果苹果拒绝使用标签栏的应用程序,就像你想象的那样,我不会感到惊讶

无论如何,要回答您的问题,您不想尝试向次视图添加“后退”按钮,而只想正确地实现导航控制器。然后,当您按下次视图时,会自动获得“后退”按钮。你也不必担心隐藏标签栏的愚蠢,因为当你推到另一个视图时,它也会被推掉

所以,考虑这个例子,在那里你有一个带有“一”、“二”和“三”按钮的选项卡。但是,与正确的选项卡栏控制器配置不同的是,您可能会有这样的配置,其中“一”位于导航控制器上,并且有一个简单的选项卡栏用户界面控件,如果您碰巧点击第二个或第三个选项卡,它将只推送到相应的视图。因此,从逻辑上讲,它可能看起来像这样(即使您没有使用故事板,这可能有助于可视化潜在的配置):

因此,在主视图控制器(“One”)上,您需要添加一个带有
IBOutlet
的选项卡栏:

@property (weak, nonatomic) IBOutlet UITabBar *tabBar;
然后在
viewDidLoad
中配置该选项卡栏,例如:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tabBar.delegate = self;
    self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:0];
}
显然,视图控制器本身需要是一个
uitabardelegate
,并且您需要一个
didSelectItem
,它将执行推送序列或使用您的
navigationController
来推送视图控制器。而且,很明显,您希望使用您在选项卡栏按钮上放置的实际标签来更改对
@“两个”
@“三个”
的引用,但希望这能给您带来以下想法:

- (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];
}
无论如何,如果这样做,就不会隐藏选项卡栏(因为它不再是控制器,而只是第一个选项卡上的用户界面元素)。这可能是实现所需用户界面的最简单方法