Domanda

Sto scrivendo un UITabBarController personalizzato in modo da poter controllare completamente l'aspetto della barra delle schede. Ho tutto funzionato, quindi ho una serie di controller di vista che gestisce.

Il controller ha una vista principale che riempie lo schermo e al suo interno ha una UIView in basso per la barra delle schede. Quella vista della barra delle schede ha un pulsante per ciascun controller di vista. Quando si premono i pulsanti, aggiungo la vista del controller di visualizzazione alla vista principale e imposto la cornice in modo che non copra la vista della barra delle schede:

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

Funziona tutto bene e posso scorrere tra i controller di visualizzazione. Tuttavia, quando presento un controller di visualizzazione modale e quindi lo rifiuto, la visualizzazione del controller di visualizzazione corrente diventa a schermo intero e copre la mia barra delle schede! Ho provato a impostare le maschere di ridimensionamento automatico per non ridimensionarle, ma continua a succedere.

Ho anche provato ad aggiungere la vista dei controller di visualizzazione in basso (sotto la barra delle schede) utilizzando:

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

Ma quando lo faccio, la barra delle schede è persino visibile sopra qualsiasi vista modale! È strano. Penso che ci sia qualcosa che non capisco, quindi sarei grato se qualcuno potesse spiegare cosa mi sto perdendo!

Grazie,

Mike

È stato utile?

Soluzione 3

Sono riuscito a trovare un modo migliore per controllare l'aspetto della barra delle schede semplicemente inserendo le visualizzazioni secondarie nella parte superiore della barra delle schede dei controller di scheda. Ha funzionato a meraviglia!

Altri suggerimenti

Prova a impostare

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

nel metodo viewWillAppear del controller

Prova questo. Penso che tu voglia controller di visualizzazione dinamica all'interno del controller della barra delle schede.

-(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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top