2017-04-08 3 views
3

Ich habe eine UITabBarController mit benutzerdefinierten Schaltfläche in der Mitte der TabBar. Aber ich bekomme ein komisches Verhalten, wenn ich hidesBottomBarWhenPushed = true setze.Wie benutzerdefinierte Schaltfläche auf TabBarController in Swift 3 ausblenden?

enter image description here

habe ich UITabBarController programmatisch in Swift 3.

Hier ist mein Code, um die benutzerdefinierte mittlere Taste zu erstellen:

func setupMiddleButton() { 
     let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 48, height: 48)) 

     var menuButtonFrame = menuButton.frame 
     menuButtonFrame.origin.y = view.bounds.height - menuButtonFrame.height 
     menuButtonFrame.origin.x = view.bounds.width/2 - menuButtonFrame.size.width/2 
     menuButton.frame = menuButtonFrame 

     menuButton.layer.cornerRadius = menuButtonFrame.height/2 
     view.addSubview(menuButton) 

     menuButton.setImage(UIImage(named: "updatemoment"), for: .normal) 
     menuButton.addTarget(self, action: #selector(menuButtonAction), for: .touchUpInside) 

     view.layoutIfNeeded() 
    } 

func menuButtonAction() { 
    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc: UINavigationController = storyboard.instantiateViewController(withIdentifier: "NewPostID") as! UINavigationController 

    self.present(vc, animated: true, completion: nil) 
    print("segue success") 
} 

Wie zu beheben, dass? Ich möchte, dass der mittlere Knopf im BottomBar bleibt.

Vielen Dank im Voraus.

Antwort

3

Ich konnte es beheben von:

die Menü-Taste in der Klasse Instanziierungsanwendung:

let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 64, height: 64)) 

Hinzufügen von zwei Funktion in demselben Controller (TabBarController):

func hideTabBar() { 
    self.tabBar.isHidden = true 
    self.menuButton.isHidden = true 
} 

func showTabBar() { 
    self.tabBar.isHidden = false 
    self.menuButton.isHidden = false 
} 

Und Wenn Sie dann die tabBar ausblenden oder anzeigen möchten, verwenden Sie:

let tabBar = self.tabBarController as! InitialViewController 
tabBar.showTabBar() 

Ich verwende es derzeit in ViewWillAppear und viewWillDisappar in einigen Controllern.

+0

funktioniert wie ein Charme. vielen Dank. – Badrinath

Verwandte Themen