所以我想构建一个具有超过 5 个项目并且可滚动的选项卡栏并找到本文 http://www.rumex.it/2010/11/how-to-customise-the-tab-bar-uitabbar-in-an-iphone-application-part-2-of-2/。
通过子类化 UITabBarController 并隐藏现有的选项卡栏即可轻松完成:
for(UIView *view in self.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
view.hidden = YES;
break;
}
}
然后我只需添加一个 UIScrollView 并根据 tabbarcontroller 的项目集合在其中添加一些按钮。
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];
}
我正在重写 setSelectedindex/ViewController 因为我需要一些附加绘图。
-(void)setSelectedViewController:(UIViewController *)selectedViewController
{
[super setSelectedViewController:selectedViewController];
[self startTimer];
}
-(void)setSelectedIndex:(NSUInteger)selectedIndex
{
[super setSelectedIndex:selectedIndex];
[self startTimer];
}
问题是,当我按下 5、6 或 7 号按钮时,选项卡控制器会打开“更多”视图。我如何摆脱它并使最后三个项目像其他项目一样? - 会不会是给超级的电话?
我的猜测是完全终止 UITabBarController 并实现我自己的自定义选项卡栏。但是是否可以禁用更多菜单并让 UITabBarController 像平常一样选择项目 5、6 和 7?