以编程方式在 UITabBarController 和 UINavigationController 中呈现视图
Posted
技术标签:
【中文标题】以编程方式在 UITabBarController 和 UINavigationController 中呈现视图【英文标题】:Present View within UITabBarController & UINavigationController Programmatically 【发布时间】:2019-01-28 16:57:33 【问题描述】:我们正在开发一个 ios 应用,它有一个 RootVC,其中 4 个 TAB 以编程方式放置,每个 Tab 都有一个单独的 ViewController
。负责搜索的选项卡之一。当用户点击此特定ViewController
上的搜索按钮时,我们希望在另一个ViewController
中显示搜索结果,其底部为TabBar
,顶部为NavigationController
,并带有“返回” “ 按钮。
我怎样才能做到这一点?我试过self.navigationController?.present
,push,但都没有成功。
RootVC.swift:
class RootVC: UITabBarController
override func viewDidLoad()
super.viewDidLoad()
setupTabBarLayout()
private func setupTabBarLayout()
// 1. Profile page
let profileVC = ProfileVC()
let profileVCBarItem = UITabBarItem(title: "Profil", image: UIImage(named: "profile_icon"), tag: 1)
profileVC.tabBarItem = profileVCBarItem
// 2. Search
let searchVC = SearchVC()
let searchVCBarItem = UITabBarItem(title: "Search", image: UIImage(named: "search_icon"), tag: 2)
searchVC.navigationItem.leftBarButtonItem = nil
searchVC.tabBarItem = searchVCBarItem
// 3. Meet
let meetVC = MeetVC()
let meetVC = SearchResultsVC()
let meetVCBarItem = UITabBarItem(title: "Meet", image: UIImage(named: "meet_icon"), tag: 3)
meetVC.tabBarItem = meetVCBarItem
// 4. Activities
let activitiesVC = ActivitiesVC()
let activitiesVCBarITem = UITabBarItem(title: "Activities", image: UIImage(named: "activities_icon"), tag: 4)
activitiesVC.tabBarItem = activitiesVCBarITem
// VC Setup
viewControllers = [profileVC, searchVC, meetVC, activitiesVC]
// Design settings
self.tabBar.backgroundColor = .lightButtonBg
self.tabBar.barTintColor = .darkMagenta
self.tabBar.tintColor = .customWhite
self.tabBar.unselectedItemTintColor = .lightButtonBg
self.tabBar.isTranslucent = false
【问题讨论】:
感谢朱利安的回答。不幸的是,它会抛出一个错误:“试图弹出一个不存在的视图控制器” 【参考方案1】:试试这个
var vc = storyboard?.instantiateViewController(withIdentifier: "identifierForStoryboard
navigationController?.pushViewController(vc, animated: true)
然后观察是否有view not in hierarchy之类的错误
【讨论】:
谢谢,但我们不使用情节提要。无论如何,使用此代码,导航控制器通过后退按钮变得可见,但底部缺少 tabBar。 self.navigationController?.pushViewController(SearchResultsVC(), 动画: true) 我应该使用 UITabBarControllerDelegate 吗? 我想这可能是我自己实现的:使用控制器数组:--medium.com/@ITZDERR/… 谢谢 Mayank,这就是我要找的东西! 无忧无虑,乐于助人。一个小忙请你投票以上是关于以编程方式在 UITabBarController 和 UINavigationController 中呈现视图的主要内容,如果未能解决你的问题,请参考以下文章
在 indexpath.item 以编程方式呈现 UIViewController(嵌入在 UITabBarController 中)
从 UITabBarController 中的另一个选项卡以编程方式在 UIPageViewController 中翻页
以编程方式将 UITabBarController 中 TabBarItem 中的图标居中
以编程方式制作 UITabBarController 和 UINavigationController Swift 4