2016-04-22 13 views
1

Ich habe eine Tab-Leiste (kein TabViewController) zu einem View-Controller hinzugefügt und dann einige Tab-Leiste-Elemente zu dieser Tab-Leiste hinzugefügt.Tab-Leiste ohne TabBarController - Hinzufügen von View-Controller für Tab-Leiste-Element im Storyboard

Jetzt möchte ich andere View-Controller an diese Tab-Leiste Elemente im Storyboard anhängen.

Wenn ich Strg + Drag auf View Controller aus Registerkartenelement Ich bekomme keine Optionen.

Bitte schlagen Sie einen Weg vor, dies zu tun.

+0

Mögliches Duplikat von http://stackoverflow.com/questions/31278709/is-it-possible-to-perform-a-segue-from-tab-bar-item –

Antwort

0

Ich hatte das gleiche Problem, aber ich konnte keinen Weg finden, einem ViewController seine eigenen viewControllers wie in der TabViewController-Fall zuzuweisen.

Ich löste es mit Containern. Ein contarner für jedes tabBarItem in Ihrer tabBar, die je nach ausgewähltem tabBarItem in der tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item Methode versteckt oder angezeigt wird.

1. Erstellen Sie Ihre Container in Ihrem UIViewController in Storyboard: Just like this Wählen Sie tabBar und Strg + Ziehen um die Klasse zu delegieren, um die tabBarDelegate Methoden hören: look here

2. Deklarieren Sie die corrisponging IBOutlets, incliding Ihre Tabbar:

#import <UIKit/UIKit.h> 

@interface TabsMainViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UITabBar *tabBar; 
@property (strong, nonatomic) IBOutlet UIView *directoryContainer; 
@property (strong, nonatomic) IBOutlet UIView *groupsContainer; 
@end 

3. den Behälter Wählen Sie im tabBar zeigen Delegiertenmethode:

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

      switch (item.tag) { 
      case 1: 
       _directoryContainer.hidden = NO; 
       _groupsContainer.hidden = YES; 
      break; 

      case 2: 
       _directoryContainer.hidden = YES; 
       _groupsContainer.hidden = NO; 
       break; 

      default: 
       break; 
     } 

    } 

Hoffe, dass hilft!

+0

Ich selbst hatte gedacht, es auf diese Weise zu tun Wenn kein anderer Weg möglich ist, war es auch so. –

+0

Das gleiche passiert mir, deshalb ist es besser, einen TabBarController zu verwenden. Trotzdem konnte ich nicht, weil ich die taBBar am oberen Rand des Bildschirms (anstelle der unteren Standardposition) setzen musste. Und dann, musste Container verwenden. –

+0

Ich habe 5 Tabs, also 5 Container mit 5 View Controllern. Aber was passiert, wenn mein Haupt-View-Controller (der Container enthält) geladen ist, werden alle Child-VCs geladen und ihre viewDidLoad-Methode aufgerufen. Aber wenn ich auf die Registerkarte wechsle, möchte ich etwas ausführen. Wie es geht? –

Verwandte Themen