在导航控制器和TabbarController内呈现视图控制器
来自一个单独的IntroViewController,我试图展示一个嵌入在UINavigationController中的UIViewController,它也是UITabbarController中的三个选项之一。在导航控制器和TabbarController内呈现视图控制器
let tabVC = storyboard?.instantiateViewController(withIdentifier: "TabBarViewController")
self.present(UINavigationController(rootViewController: tabVC!), animated: true, completion: nil)
当我提出我的视图控制器上面的代码中,导航控制器是不完整的,缺少从所有视图控制器的物品栏(见图片)。
我一直在这几个小时,并且可以只拿到TabbarController显示,该UINavigationController的,但不能同时使用。 感谢您的帮助。非常感激!
更新:我应该澄清,只有当我尝试从另一个视图控制器呈现它时,问题才存在。当我将它用作初始视图控制器时,一切都很好。
使用此代码在tabBar控制器类中初始化您的viewControllers。 我用不同的故事板的每一个的viewController和tabBarButton但你也可以从一个故事板只是初始化右视图控制器makeTabBarItemForViewController方法
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!
}
感谢您的帮助。这很棒!我最终修改了用户体验,以至于原来的主持人现在正在有条件地出现。 – robinyapockets
这是为你工作吗? –
入住这也许会帮助他们初始化。 https://stackoverflow.com/questions/44122404/swift-tabbarcontroller-viewcontroller-navigationcontroller/44122801#44122801 –