Frage

Ich schreibe eine benutzerdefinierte UITabBarController so kann ich mich voll Erscheinungsbild der Tab-Leiste steuern. Ich habe es arbeiten alle so habe ich eine Reihe von View-Controller, die es behandelt.

Der Controller verfügt über eine Hauptansicht, die den Bildschirm ausfüllt, und im Innern eine UIView an der Unterseite für die Registerleiste aufweist. Das Tab-Leiste Ansicht verfügt über eine Taste für jeden View-Controller. Wenn Tasten gedrückt werden füge ich die Ansicht des View-Controller in der Hauptansicht, und legen Sie es Rahmen ist so, dass es nicht die Tab-Leiste Ansicht nicht abdeckt:

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);

Das alles funktioniert gut, und ich kann zwischen den View-Controller ganz gut Flick. Allerdings, wenn ich einen modalen View-Controller präsentieren, und dann entlassen, der aktuelle Sicht des View-Controller wird Vollbild- und deckt meine Tab-Leiste nach oben! Ich habe versucht, die automatischen Größen Masken Einstellung nicht die Größe, sondern wird immer wieder passiert.

Ich habe auch versucht haben, wobei sich die View-Controller die auf den Boden (unterhalb der Tab-Leiste) anzeigen, indem Sie mit:

[self.view insertSubview:controller.view atIndex:0];

Aber wenn ich das tue, die Tab-Leiste ist noch sichtbar über allen modalen Ansichten! Was seltsam ist. Ich denke, es ist etwas, was ich nicht verstehen, so wäre ich dankbar, wenn jemand erklären kann, was mir fehlt!

Danke,

Mike

War es hilfreich?

Lösung 3

Ich habe es geschafft, einen besseren Weg zu finden, um das Aussehen der Tab-Leiste zu steuern, indem einfach Subviews oben auf der Registerkarte Controller Tab-Leiste eingefügt wird. Es war ein Genuss!

Andere Tipps

Versuchen Sie,

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

in der viewWillAppear Methode der Steuerung

Probieren Sie dies aus. Ich glaube, Sie dynamische Ansicht-Controller innerhalb Tableiste Controller wollen.

-(void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
tabBarController.delegate=self;
tabBarController=[[UITabBarController alloc] init];

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil];
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil];
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil];

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease];
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease];
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease];
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease];
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease];

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil];

nvCtr0.tabBarItem.enabled=NO;
nvCtr4.tabBarItem.enabled=NO;

[window tabBarController.view];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top