iPhone: tabbar personalizado sem o terrível menu Mais
Então, eu queria criar uma barra de guias que tenha mais de 5 itens e seja rolável e encontraEste artig. É fácil fazer uma subclasse do UITabBarController e ocultar a barra de guias existente:
for(UIView *view in self.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
view.hidden = YES;
break;
}
}
Então, basta adicionar um UIScrollView e acionar alguns botões, com base na coleção de itens do tabbarcontrolle
int i = 0;
for (UITabBarItem *item in self.tabBar.items)
{
UIView *tab = [[[UIView alloc] initWithFrame:CGRectMake(i*60, 0, 60, 60)] autorelease];
UIButton *btn = [[[UIButton alloc] initWithFrame:CGRectMake(7.5, 1, 45, 45)] autorelease];
[btn setImage:item.image forState:UIControlStateNormal];
btn.tag = i;
[btn addTarget:self action:@selector(didSelectTabrBarItem:) forControlEvents:UIControlEventTouchUpInside];
[tab addSubview:btn];
[self.scrollView addSubview:tab];
i++;
if(self.selectedViewController == nil)
[self setSelectedIndex:0];
}
Estou substituindo o setSelectedindex / ViewController, pois preciso de algum desenho adiciona
-(void)setSelectedViewController:(UIViewController *)selectedViewController
{
[super setSelectedViewController:selectedViewController];
[self startTimer];
}
-(void)setSelectedIndex:(NSUInteger)selectedIndex
{
[super setSelectedIndex:selectedIndex];
[self startTimer];
}
O problema é que, quando estou pressionando o botão número 5, 6 ou 7, o tabbarcontroller abre a exibição Mais. Como faço para me livrar disso e fazer os três últimos itens agirem como os outros? - Poderia ser a chamada para o super?
Meu palpite seria matar completamente o UITabBarController e implementar minha própria barra de tabulação personalizada. Mas é possível desativar o menu more e fazer com que o UITabBarController selecione os itens 5, 6 e 7 como normai