Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在Tabbar控制器上隐藏图像_Swift_Image_Tabbar - Fatal编程技术网

Swift 在Tabbar控制器上隐藏图像

Swift 在Tabbar控制器上隐藏图像,swift,image,tabbar,Swift,Image,Tabbar,我有这样一个选项卡栏: 中间按钮只是添加到tabBarController子类中的UIImage,如下所示: class TabBarDelegate: UITabBarController { let button = UIImageView() override func viewDidLoad() { super.viewDidLoad() delegate = self self.tabBar.unselectedIt

我有这样一个选项卡栏:

中间按钮只是添加到tabBarController子类中的UIImage,如下所示:

class TabBarDelegate: UITabBarController {

    let button = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
        self.tabBar.unselectedItemTintColor = #colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1)
        button.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        button.image = UIImage(named: "tabBarAdd")
        button.setImageColor(color: #colorLiteral(red: 0.184496969, green: 0.6701939702, blue: 0.3898918033, alpha: 1))
        let imageView = UIImageView()
        imageView.image = UIImage(named: "tabBarAdd")
        imageView.bounds = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: button.frame.height)
         self.view.insertSubview(button, aboveSubview: self.tabBar)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        button.frame = CGRect.init(x: self.tabBar.center.x - 17.5, y: self.view.bounds.height - 80, width: 35, height: 35)
        button.layer.cornerRadius = 17.5
    }
}
我的图像当前颜色不正确,因此我正在使用扩展来更改颜色,这是代码中的
按钮。setImageColor(color:)
函数

当我按下中间的按钮时,它工作正常,触摸只是通过图像进入tabBarItem

我想做的是在过渡到中间视图控制器时隐藏图像。

我已经尝试在正在出现的viewController中使用
viewdideappease()
函数。我使用了以下代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    let tabBarD = TabBarDelegate()
    tabBarD.button.isHidden = true
}
但这不起作用。我还尝试完全使用
tabBarD.button.removeFromSuperview()
从superview中删除图像,但即使这样也不起作用

我想要任何想法和帮助


提前感谢:)

在您的
视图中出现了
middleViewController
方法,您实际上正在初始化一个新的
TabBarController
,这就是为什么它不能按您想要的方式工作

删除该代码,并将两种方法添加到
tabBarController
中的基本
ViewControllers
视图将消失
,和
视图将出现

func viewWillDisappear(_ animated: Bool) {
    super.viewWilDisappear(animated)
    if let tabBarController = self.tabBarController as? TabBarDelegate {
        tabBarController.button.isHidden = true
    }

}

func viewWillAppear(_ animated: Bool) {
    super.viewWilAppear(animated)
    if let tabBarController = self.tabBarController as? TabBarDelegate {
        tabBarController.button.isHidden = false
    }
}
因此,每次您将转到另一个viewController(可能是detail viewController,从tabBarController的基本控制器,当其中一个baseViewController的视图将消失时将其隐藏,然后,如果视图将再次出现,则将其再次显示。

我明白了

感谢emrepun,他让我开始以不同的方式思考如何解决这个问题

我最终使用了委托方法的扩展,如下所示:

extension TabBarDelegate: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if viewController.hidesBottomBarWhenPushed {
            self.button.isHidden = true
        }
        return true
    }
}
而且,由于我在从故事板中推出
方法时使用了
隐藏底部条形图,这就奏效了


感谢您抽出时间

很抱歉,此操作不起作用。选项卡栏没有调用viewWillAppear和English方法。当viewWillAppear和Englishe方法显示在middleViewController中的MiddleViewControllerry上时,请更新控制器中的viewWillAppear方法,无论您在何处编写该方法作为我的实现。然后添加viewWillAppear,并将其隐藏为我的实现也为您的middleViewController执行了。此方法看起来不错,很高兴我能提供帮助:)