【问题标题】:Present View within UITabBarController & UINavigationController Programmatically以编程方式在 UITabBarController 和 UINavigationController 中呈现视图
【发布时间】: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

    }

【问题讨论】:

  • 感谢朱利安的回答。不幸的是,它会抛出一个错误:“试图弹出一个不存在的视图控制器”

标签: ios swift uinavigationcontroller uitabbarcontroller viewcontroller


【解决方案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,这就是我要找的东西!
  • 无忧无虑,乐于助人。一个小忙请你投票
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多