Вы пытаетесь скрыть его до его создания, вы только что создали экземпляр TabBarViewController
, сейчас вы просто должны передать флаг с текущего экрана на экран TabBarViewController
, а затем на экран TabBarViewController
. Выполните следующее.
class TabBarViewController: UITabBarController {
var hideButton:Bool = false
let button = UIButton.init(type: .custom)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
button.setImage(UIImage(named: "assetIcon"), for: .normal)
button.backgroundColor = .blue
button.layer.cornerRadius = 35
self.view.insertSubview(button, aboveSubview: self.tabBar)
self.view.layoutIfNeeded()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let distance = ((self.view.bounds.height)/100)*11
// safe place to set the frame of button manually
button.frame = CGRect.init(x: self.tabBar.center.x - 32, y: self.view.bounds.height - distance, width: 70, height: 70)
button.isHidden = hideButton
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func hideTabButton() {
self.button.isHidden = true
}
func showTabButton() {
self.button.isHidden = false
}
}
Теперь просто передайте логическое значение TabbarViewController
, если оно еще не было создано
override func viewDidAppear(_ animated: Bool) {
let vc = storyboard?.instantiateViewController(withIdentifier: "tabBarVC") as! TabBarViewController
vc.hideButton=true
}
Если ваша панель вкладок уже создана, не устанавливайте ее снова, просто получите доступ к ней, как показано ниже
if let tabController = self.tabbarController as? TabbarViewController{ tabController.button.isHidden = true }
И при попытке вернуть его обратно просто измените true на false
if let tabController = self.tabbarController as? TabbarViewController{ tabController.button.isHidden = false }