1

別のIntroViewControllerから来て、UITabbarControllerの3つのオプションの1つであるUINavigationControllerに埋め込まれたUIViewControllerを表示しようとしています。ナビゲーションコントローラとTabbarController内にView Controllerを表示する

let tabVC = storyboard?.instantiateViewController(withIdentifier: "TabBarViewController") 
self.present(UINavigationController(rootViewController: tabVC!), animated: true, completion: nil) 

私は上記のコードで私のビューコントローラを提示すると、ナビゲーションコントローラは、すべてのビューコントローラ(画像を参照)からバー項目が欠落し、完全なものではありません。

enter image description here

私は数時間のためにこれをしてきた、とのいずれかのみ、UINavigationControllerを表示するTabbarControllerを得ることができますが、両方ではありません。 ありがとうございました。とても有難い!

更新:別のView Controllerから表示しようとすると問題が発生することがわかります。最初のView Controllerとして使用すると、すべてが問題ありません。

+0

チェックmakeTabBarItemForViewController方法で1枚の絵コンテだけのinit右のビューコントローラからそれらを初期化することができます。ご協力いただきありがとうございます。https://stackoverflow.com/questions/44122404/swift-tabbarcontroller-viewcontroller-navigationcontroller/44122801#44122801 –

答えて

0

このコードを使用して、tabBarコントローラクラスのViewControllerを初期化します。 は、私はすべてのViewControllerとtabBarButtonに異なるストーリーボードを使用していますが、これは多分それが役立つだろう

private func loadViewControllers(animated: Bool){ 

    var viewControllers = [UIViewController]() 
    viewControllers.append(self.makeTabBarItemForViewController(storyboardIdentifier: "CurrentChannels", title: LocalizationUtil.localizedString(forKey: "On Air"), selectedImageName: Assets.tabBarIconOnAir.rawValue, imageName: Assets.tabBarIconOnAirUnselected.rawValue)) 
    self.viewControllers = viewControllers; 
    self.setViewControllers(viewControllers, animated: animated) 
} 


private func makeTabBarItemForViewController(storyboardIdentifier: String,title:String , selectedImageName:String , imageName:String)-> UIViewController{ 
    let storyboard = UIStoryboard(name: storyboardIdentifier, bundle: nil) 
    let vc:UIViewController? = storyboard.instantiateInitialViewController(); 
    let selectedImage = UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal) 
    let notSelectedImage = UIImage(named:selectedImageName)?.withRenderingMode(.alwaysOriginal) 
    let item = UITabBarItem(title: title, image: selectedImage, selectedImage: notSelectedImage) 
    vc!.tabBarItem = item 

    if let navVC = vc as? UINavigationController{ 
     navVC.delegate = self 
    } 
    return vc! 
} 
+0

これは素晴らしい!元のプレゼンターだったものが条件付きで表示されるように、私はUXを改訂しました。 – robinyapockets

+0

この作品はあなたのためですか? –

関連する問題