2017-08-18 6 views
0

Ich möchte eine Tab-Leiste oben auf dem iPhone-Bildschirm implementieren und in der Lage sein, in den verschiedenen Ansichten zu navigieren. Ich habe die delegierte Methode verwendet wird, ist hier, wie es im Drehbuch aussieht:Wie verwende ich eine UITabBar ohne UITabBarController?

Click here to see the screenshot

Da ich jedoch nicht die TabBar auf mehrere Container delegieren kann, ist es, den Code scheint, dass ich umgesetzt haben, nicht funktioniert, hier ist es:

class PersonnesController: UIViewController, UITabBarDelegate { 

    @IBOutlet weak var tabBar : UITabBar! 
    @IBOutlet weak var comptesContainer : UIView! 
    @IBOutlet weak var membreContainer : UIView! 
    @IBOutlet weak var discussionContainer : UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     tabBar.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tabBarDelegate(tabBar: UITabBar!, didSelectItem item: UITabBarItem!) { 

     switch item.tag { 
      case 1: 
       comptesContainer.isHidden = false 
       membreContainer.isHidden = true 
       discussionContainer.isHidden = true 

      case 2: 
       comptesContainer.isHidden = true 
       membreContainer.isHidden = false 
       discussionContainer.isHidden = true 

      case 3: 
       comptesContainer.isHidden = true 
       membreContainer.isHidden = false 
       discussionContainer.isHidden = true 

      default: 
       comptesContainer.isHidden = false 
       membreContainer.isHidden = true 
       discussionContainer.isHidden = true 
     } 
    } 
} 

Das eigentliche Problem scheint zu sein, dass ich nur die TabBar nur ein Container delegieren kann, ohne auf die drei zu übertragen ist. Wie könnte ich das erreichen?

PS: Die beste Antwort, die ich bisher gefunden habe, ist here, aber ich schaffe es nicht zu implementieren, ich weiß nicht, wie er/sie es schafft, mehrere Male zu delegieren.

Antwort

1

Meine Frage wäre, warum nicht den UITabBarController verwenden? Nur die Implementierung des Delegaten wird nicht das tun, was Sie versuchen zu tun, solange niemand in den Delegaten ruft (was der UITabBarController ist/ist).

+0

Ich habe bereits einen UITabBarController, und ich möchte eine andere TabBar am Anfang der App, deshalb möchte ich die UITabBar implementieren, die nicht zu funktionieren scheint. Wie implementieren Entwickler es? –

+0

Dies ist keine Antwort. Dies sollte als Kommentar gepostet werden. – rmaddy

+0

Tut mir leid das zu sagen, aber meiner Meinung nach sind Sie hier auf dem falschen Weg. Das verstößt gegen jedes Best Practice für iOS-Nutzererfahrungen. Aber nehmen wir an, Sie müssen: wollen Sie die gleichen Tabs da oben oder ganz andere? – Eike

0

Sind Sie sicher, dass der Delegat der Registerkarte auf den Ansichts-Controller eingestellt ist?

override func viewDidLoad() { 
    super.viewDidLoad() 
    tabBar.delegate = self 
} 

Können Sie dies versuchen und sehen, ob die Delegiertenfunktion aufgerufen wird?

+0

Ich setze den Delegierten des Tabors falsch an einen der Container statt an einen der View-Controller. Vielen Dank. Ich habe auch Ihren Code-Frieden hinzugefügt, aber ich sehe nicht, dass die Delegat-Funktion aufgerufen wird, sollte sie im Debugger-Bereich erscheinen? Wo sonst könnte ich es sehen? –

+0

Das Problem ist jetzt, dass tabBarDelegate nie verwendet oder implementiert wird, es scheint wie ich Funktion, die geschrieben wurde, aber das ist nicht verwendet. Ich versuchte es mit der TabBar mit einer @IBAction verbinden, funktioniert nicht .. –

+0

Ich denke, Sie sind verwirrt. Der Delegat der Tabbar ist PersonnesController und PersonnesController behandelt andere Subcontainer. – HMHero

Verwandte Themen