2016-08-08 13 views
1

Ich habe eine UITabBar mit 4 Registerkarten.Erkennen, wenn TabBar Element gedrückt wird, wenn Seite

Ich möchte, dass eine bestimmte Funktion in jeder ViewController der Registerkarte aufgerufen werden, wenn die tabBarItem zweimal gedrückt wird (wie der Benutzer jetzt auf ProfileVC und drückt auf Profile Artikel möchte ich die Ansicht aktualisieren).

Wie kann ich erkennen, wenn der Benutzer auf der Registerkarte gedrückt hat, dass er jetzt in seiner Ansicht ist?

Vielen Dank!

+0

u die tabBar Delegatmethoden versuchen Haben? –

+0

Werfen Sie einen Blick auf diese Antwort. [Link] (http://stackoverflow.com/a/5455756/1896921) – AtWork

Antwort

1

Eine Möglichkeit ist die Aktualisierung innerhalb viewWillAppear() Methode. Und der zweite ist beträchtlich lang.

In Eltern-View-Controller

protocol ParentDelegate { 
    func refresh() 
} 

class LandingViewController: UIViewController, UITabBarDelegate { 

    var delegate: ParentDelegate? 
    var selectedItem: UITabBarItem! 

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

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if segue.identifier == "SegueNameForDestinationViewController1" { 

      if let vc = segue.destinationViewController as? YourDestinationViewController1 { 
       self.delegate = vc.self 
      } 

     } else if segue.identifier == "SegueNameForDestinationViewController2" { 

      if let vc = segue.destinationViewController as? YourDestinationViewController2 { 
       self.delegate = vc.self 
      } 

     } 
    } 

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

     if self.selectedItem == item { 
      self.delegate?.refresh() 
     } 
     self.selectedItem = item 
    } 
} 

In jedem Tab-View-Controller,

class TabViewController: UIViewController, ParentDelegate { 

    func refresh() { 
     //write your code here 
    } 
} 
+0

Danke für Ihre Antwort, 'viewWillAppear()' wird nicht aufgerufen, wenn Sie erneut auf den gleichen Tab-Eintrag tippen. Und bei der zweiten Option verwende ich kein Storyboard, wie kann ich das tun? Vielen Dank! –

+0

Die zweite Antwort erfordert kein Storyboard. Welchen Teil verstehst du nicht? – LIH

+0

Segmente sind nur für Storyboard, nicht wahr? –

Verwandte Themen