簡體   English   中英

當視圖 Controller 嵌入導航 Controller 時,以模態方式顯示選項卡欄視圖?

[英]Present a Tab Bar View Modally when View Controller is embedded in a Navigation Controller?

我的storyboard就是這樣安排的。

紅色:標簽欄 Controller 繼續...
橙色:已嵌入的導航控制器...
綠色:視圖控制器

故事板安排

我想讓我的中間選項卡視圖(綠色)以模態方式呈現,有點像 reddit 應用程序如何使用中間的“發布到 Reddit”按鈕。 當這個中間視圖被關閉時,之前打開的原始選項卡將被返回。 如何才能做到這一點?

一種方法來做到這一點......

給作為您的第二個選項卡的UINavigationController一個 StoryboardID - 例如“createItemsNavController” - 然后在您的自定義選項卡欄 controller class 中實現shouldSelect

如果選擇了第二個選項卡(選項卡,像所有 arrays 一樣,都是從零開始的),實例化您的“createItemsNavController”並呈現它,為shouldSelect返回false

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    guard let indexOfTab = viewControllers?.firstIndex(of: viewController) else {
        return true
    }
    
    if indexOfTab == 1 {
        if let vc = storyboard?.instantiateViewController(withIdentifier: "createItemsNavController") as? UINavigationController {
            present(vc, animated: true, completion: nil)
        }
        return false
    }
    
    return true

}

如果你要走那條路,你也可以(這可能是個好主意)用空白視圖 controller 替換 Storyboard 中的 Tab 連接......因為你可能想避免它被標簽欄加載 Z594C103F2C6E04CDAZ8ABAB09F ,即使您從不允許激活該選項卡。

附帶說明:這可能是一個非常令人困惑的用戶體驗。 用戶(和Apple )喜歡符合通用界面操作的應用程序。 由於用戶熟悉選項卡欄,選擇選項卡按鈕會切換到該選項卡,因此可能不贊成以這種方式更改功能。

當然,這是您的應用程序和您的設計選擇...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM