簡體   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