2012-04-04 7 views
0

Ich bin neu in diesem iphone development.I eine Tab-Leiste Anwendung erstellt hat, die aus 6 Tabs bestehen ist dies der Code für die Tab-Leiste Controller Erstellung in appdelegaate Datei didfinishlaunchingWie blende ich die Tableiste aus?

UIViewController *viewController1 = [[[cardsAvailable1 alloc] 
             initWithNibName:@"cardsAvailable1" bundle:nil] autorelease]; 
UIViewController *viewController2 = [[[fetchcard1 alloc] 
             initWithNibName:@"fetchcard1" bundle:nil] autorelease]; 
UIViewController *viewController3 = [[[registration alloc] 
             initWithNibName:@"registration" bundle:nil] autorelease]; 
UIViewController *viewController4 = [[[logintab alloc] 
             initWithNibName:@"logintab" bundle:nil] autorelease]; 

UIViewController *viewController5 = [[[registration alloc] 
             initWithNibName:@"logout" bundle:nil] autorelease]; 
UIViewController *viewController6 = [[[logintab alloc] 
             initWithNibName:@"myprofile" bundle:nil] autorelease]; 

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 

self.tabBarController.viewControllers = [NSArray arrayWithObjects: 
             [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController3] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController4] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController5] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController6] autorelease], 
             nil]; 
self.tabBarController.selectedIndex = 3; 

self.window.rootViewController = self.tabBarController; 
[self.window addSubview:self.tabBarController.view]; 

[self.window makeKeyAndVisible]; 

jetzt mein Problem nach a Person ist Login, dh klicken Sie auf den Login-Button auf der Login-Seite Ich möchte die beiden Tab-Leiste Element dh Registrierung Seite und Login-Seite ausblenden und müssen die Logout-Seite und Myprofile Seite mit der Tab-Leiste einschließlich holen Karte und Karte verfügbar Kann mir jemand eine Methode vorschlagen, das zu tun?

Antwort

3

Sie können Elemente auf einer Registerkartenleiste hinzufügen und entfernen, indem Sie das Array mit Ansichtscontrollern für die Registerkartenleiste bearbeiten.

NSMutableArray newArrayOfItems = [[NSMutableArray alloc] initWithArray:self.tabBarController items]]; 
[newArrayOfItems removeObjectAtIndex:indexOfUnneededItem]; 
[self.tabBarController setItems:newArrayOfItems animated:true]; 
[newArrayOfItems release]; 

In Ihrem Beispiel und als Antwort auf Ihren Kommentar wird der folgende Code funktionieren, solange Sie Ihre App Delegate Header importieren.

NSMutableArray newArrayOfItems = [[NSMutableArray alloc] initWithArray: [[[UIApplication sharedApplication] delegate].tabBarController items]]; 
[newArrayOfItems removeObjectAtIndex:indexOfUnneededItem]; 
[[[UIApplication sharedApplication] delegate].tabBarController setItems:newArrayOfItems animated:true]; 
[newArrayOfItems release]; 
+0

Ich denke, das wird nicht funktionieren, da ich Tableiste Anwendung erschaffe so der Tab-Leiste Controller-Code in Delegaten Datei didfinishlaunching.then geschrieben, wie ich diesen Code in einer anderen Klasse-Datei verwenden kann. Kannst du mir sagen, wo ich diesen Code ablegen soll? – user1288402

+0

Sie benötigen einen Verweis auf den Tab-Bar-Controller in Ihren zusätzlichen Klassendateien. Sie könnten beispielsweise den Tab-Bar-Controller zu einer Eigenschaft des App-Delegaten machen und dort darauf zugreifen. Ein anderer Ansatz wäre das Hinzufügen einer Methode im App-Delegaten, die von Ihrer Klasse ausgeführt werden kann, und das Entfernen der Registerkarte. –

+0

Ich habe den Code in meiner Antwort aktualisiert, um für Ihre bestimmte App zu arbeiten. –

1

Sie können vor dem Drücken View-Controller die hidesBottomBarWhenPushed Eigenschaft festgelegt. Es gibt den folgenden Beispielcode:

LoginController *lc = [[LoginController alloc] initWithNibName:nil bundle:nil]; 
lc.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:lc animated:YES]; 
[lc release];