swift:UITabBarController和UINavigationController混合使用

在我們的項(xiàng)目中,除非是只有一個控制器的App,否則,通常需要對這些控制器進(jìn)行管理。為了方便對這些控制器進(jìn)行管理,iOS提供了2種特殊的控制器:1.UITabBarController 2.UINavigationController.關(guān)于這兩個特殊控制器的一般用法,可以查看這篇文章:iOS多控制器之UINavigationController&UITableBarController - 簡書
我們將要介紹的是如何同時使用這兩種特殊控制器,我們先看看同時使用這兩個控制器時候它們之間的關(guān)系:

image

可以看到TabbarView位于UIWindow之上,而NavigationView位于TabbarView之上,最后我們的主要視圖在最上方。這里的關(guān)系我們在SceneDelegate.swift里進(jìn)行設(shè)置,而在此之前我們要在targets中將Main Interface設(shè)置為空,不使用默認(rèn)的故事板,否則會出現(xiàn)黑屏:

image

設(shè)置完后開始在SceneDelegate.swift編寫代碼:

    guard let _ = (scene as? UIWindowScene) else { return }
    self.window = UIWindow(windowScene: scene as! UIWindowScene)
    
    let tab = UITabBarController.init()
    
    let  uikitVC = UIStoryboard.init(name: "uiKit", bundle: nil).instantiateViewController(identifier: "uiVC")
    let uiNav = UINavigationController(rootViewController: uikitVC)
    uiNav.title = "uiKit"
    
    let arVC = UIStoryboard.init(name: "AR", bundle: nil).instantiateViewController(identifier: "ARVC")
    let arN = UINavigationController(rootViewController: arVC)
    arN.title =  "AR"
    
    tab.viewControllers = [uiNav, arN]
    self.window?.rootViewController = tab

    self.window?.makeKeyAndVisible()

當(dāng)我們要在navigation所屬控制器內(nèi)部進(jìn)行頁面跳轉(zhuǎn)時,我們使用push的方法進(jìn)行壓棧,同時若我們想在push后的VC中底部的tabbaritem隱藏時,我們還要進(jìn)行相應(yīng)的設(shè)置:

        let photoVC = UIStoryboard.init(name: "uiKit", bundle: nil).instantiateViewController(identifier: "photoVC")
        photoVC.hidesBottomBarWhenPushed = true// navigation push到另一個視圖時候底部tabbaritem不顯示
        self.navigationController?.pushViewController(photoVC, animated: true)

至此就基本完成兩種控制器的混合編程了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容