So entfernen Sie programmgesteuert ein tab bar item erstellt, in der übergeordneten Klasse NIB-Datei?
In meinem iPhone-Anwendung, die ich haben eine gemeinsame tab-Leiste mit drei Registerkarten, die präsentiert wird von mehreren Ansichten nach dem drücken einer Taste. Der Ansatz, dem ich folgte, war der workflow von Tweetie Anwendung, beschrieben in Robert Conn post.
Beachten Sie, dass der main-controller ist eine Navigations-controller; die tab-Leiste befindet sich in einer view-controller NIB-Datei der navigation stack, und der Effekt der Umschaltung zwischen den tabs erfolgt in Stellvertretung didSelectItem Methode.
@interface GameTabBarController : UIViewController<UITabBarDelegate> {
UITabBar *tabBar;
UITabBarItem *lastGameTabBarItem;
UITabBarItem *previousGamesTabBarItem;
UITabBarItem *myBetsTabBarItem;
NSArray *viewControllers;
UIViewController *currentViewController;
}
@implementation GameTabBarController
...
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
UIViewController *viewController = nil;
//Get the view controller linked to the tab bar item pressed
...
//Switch to the view
[self.currentViewController.view removeFromSuperview];
[self.view addSubview:viewController.view];
self.currentViewController = viewController;
}
...
@end
Da die Aussicht auf die tab-Leiste muss angepasst werden, je nach den view-controller der Anwendung kam, ich habe an diesem GameTabBarController
einer übergeordneten Klasse mit, dass eine NIB-Datei, die die tab-Leiste. Dann, ich habe mehrere Kinder Klassen:
@interface FirstGameTabBarController : GameTabBarController {
...
}
@interface SecondGameTabBarController : GameTabBarController {
...
}
...
Mein problem ist, dass einige der Kinder, die Klassen würde ich gerne entfernen der Dritten Registerkarte der NIB-Datei, die im Zusammenhang mit übergeordneten Klasse. Aber da gibt es keine UITabBarController beteiligt ist, kann ich nicht Folgen typische Ansätze im web gefunden, d.h. entfernen Sie den view-controller der tab bar item.
Wie kann ich das tun? Ist es möglich, zu entfernen Elemente, die zuvor in einer NIB-Datei?
Dank!!
UPDATE
Die Lösung war so einfach... ich habe einfach zu ersetzen, die tab bar items, statt der view-Controller:
NSMutableArray *items = [NSMutableArray arrayWithArray:self.tabBar.items];
[items removeObjectAtIndex:2];
[self.tabBar setItems:items];
Dank @Praveen S für den Hinweis mich in die richtige Richtung.
InformationsquelleAutor elitalon | 2011-05-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden code hat die Lösung:
auch in swift4 funktioniert
InformationsquelleAutor Kennet Jacob
Swift 4
InformationsquelleAutor mourodrigo
Können Sie halten eine Referenz auf die Registerkarte bar-Objekt in Ihre Klasse und führen Sie die gewünschten Aktionen.
Schließen Sie es über den Interface builder und Sie können Handlungen ausführen, und in Ihrem Fall denken Sie vielleicht, es zu entfernen von superview.
Sie können nicht entfernen Sie eine
UITabBarItem
aus seinem superview direkt, weil es einUIBarItem
, die erbt vonNSObject
, nichtUIView
. Sie hätte zur Iteration über dieUITabBar
's Untersichten und herauszufinden, was einem entspricht derUITabBarItem
, die wahrscheinlich erfordern private APIs.InformationsquelleAutor Praveen S
Dies ist, was es für mich funktioniert für Swift 4
UITabBarController
Klasse.UITabBarController
- Klasse, um die Ansicht storyboard.Entfernen Sie die
UIViewController
aufviewDidLoad
:ist es sicher, um es so zu benutzen?
InformationsquelleAutor pableiros