2015-10-12 14 views
5

Ho un tabbarcontroller nella storyboard come controller di vista inizialeTabBarController restituisce null

enter image description here

enter image description here

Come funziona questo ritorno nullo

UITabBarController* tabbarController = (UITabBarController*) self.tabBarController; 
NSLog(@"%@",tabbarController); 
NSLog(@"%@",self.navigationController.tabBarController); 

Originariamente quello che sto cercando di fare

NSMutableArray *newTabs = [NSMutableArray arrayWithArray:[self.tabBarController viewControllers]]; 
NSLog(@"\n\n\n%lu\n\n\n",(unsigned long)[newTabs count]); 
NSLog(@"self.tabBarController.viewControllers %@ \n\n",self.tabBarController); 
[newTabs removeObjectAtIndex: 1]; 
[self.tabBarController setViewControllers:newTabs]; 

Perché ricevo null?

+0

Dove si trova questo codice? In quale metodo viene chiamato? – Leonardo

+0

viene chiamato in 'XCTabViewController.m' 5 secondi dopo la visualizzazionedidappare' [self performSelector: @selector (ritardato) withObject: nil afterDelay: 5]; ' –

+1

Allora, non sarebbe" self "l'UITabBarController? Invece di 'self.tabBarController' – Leonardo

risposta

4

Il motivo nulla viene restituito, è che self è il vostro UITabBarController, quindi, non ha nulla a self.tabBarController

Il codice dovrebbe essere simile a questo:

NSMutableArray *newTabs = [NSMutableArray arrayWithArray:[self viewControllers]]; 
NSLog(@"\n\n\n%lu\n\n\n",(unsigned long)[newTabs count]); 
NSLog(@"self.viewControllers %@ \n\n",self); 
[newTabs removeObjectAtIndex: 1]; 
[self setViewControllers:newTabs]; 
1

Partenza risposta di Joe self.tabBarController is NULL

Se si dispone di un controller di navigazione è necessario aggiungere questo al file YourTabBarViewController.h

@property (nonatomic, retain) UITabBarController * myTabBarController; 

Poi, nel file di YourTabBarViewController.m in viewDidLoad solo assegnarlo a sé e aggiungere il delegato

self.myTabBarController = self; 
self.myTabBarController.delegate = self;