【问题标题】:Hide view while push to tabBar - swift推送到 tabBar 时隐藏视图 - swift
【发布时间】:2019-10-27 16:09:43
【问题描述】:

我有一个像下面这样的视图控制器。

这个视图附加了一个tabBarController。 tabBarController 有 5 个 viewController,我必须从另一个页面展示 tabBar 的第 5 个 viewController。所以我用下面的代码来展示那个viewController

@IBAction func onClickUserProfile(_ sender: Any) {
        let navVc = self.storyboard?.instantiateViewController(withIdentifier: "ProfileVC")as! ProfileVC
        navVc.userId = Int(self.userId)
        navVc.navigationItem.hidesBackButton = true
        navVc.tabBarController?.tabBar.isHidden = false
        self.navigationController?.pushViewController(nxtVc, animated: true)
    }

但在执行代码后,它会导致视图控制器如下图所示。 视图经过 tabBar。任何人都可以帮我推送到 tabBar 视图。

【问题讨论】:

  • 尝试在ProfileVC(viewDidLoad)中自动设置AdjustsScrollViewInsets = false
  • 什么都没有发生。视图返回相同的结果
  • 为什么不用present函数来展示你的视图控制器呢?
  • 使用present时隐藏tabBar和navigationBar
  • “Sell Your Staff”按钮的底部限制是什么?

标签: ios swift uinavigationcontroller uitabbarcontroller tabbar


【解决方案1】:

您需要从UITabBarController 中设置选定的UIViewController,这样应该可以工作。

self.tabBarController?.selectedViewController = self.tabBarController?.viewControllers![1]

其中tabBarController?.viewControllers 返回嵌入在UITabBarController 中的当前ViewControllers 的数组。

您的代码应该是这样的。

@IBAction func onClickUserProfile(_ sender: Any) {
        let vc =  self.tabBarController?.viewControllers![1] as! ProfileVC // use your index
        vc.userId = Int(self.userId)
        self.tabBarController?.selectedViewController = vc
    }

注意:不要创建UIViewController 的实例,因为.instantiateViewController(withIdentifier:) 使用已经存在的 数组tabBarController?.viewControllers中的那些,创建新的 实例将被视为新实例并给出您遇到的问题 那里。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    相关资源
    最近更新 更多