我在我的一个项目中使用TabStrip。选项卡条中的TTTabItems是字母A-Z。当我单击每个字母时,代表导航到另一个页面。
在另一个页面中也有一个TTTabstrip (相同的结构,框架等)。如何在不触发事件的情况下在第二个选项卡条上标记字母表?
我尝试获取字母的整数值mod整数值"a“(这样它将为我带来一个索引)并将其赋给selectedIndex:
unichar letter = [[NSString stringWithString:@"e"] characterAtIndex:0];
/*(k is @"a" unichar)*/
tabBar.selectedTabIndex = letter % kEnglishAlpha;
但是它给了我释放错误。
**更新**
在我在评论中提到的向下钻取详细视图(我有问题的地方)上,我有以下来自tt导航的内容:
tt://listWords/Cat
在视图的加载事件上,在初始化TTTabStrip (它只包含字母A-Z的TTTabItem )和tabBar.delegate = self声明之后,我使用上面的代码“选择”所选的字母。视图的其余部分显示了定义和所有相关内容。通常情况下是这样的,但是当我使用back按钮返回到包含tttableItems (猫、番茄酱、猫薄荷等)的视图时,它会显示已释放控制器。
我的猜测是,使用tabselected委托代码并设置tabindex,它会立即触发tab selected代码,这就是问题所在。如果我不使用selectedTabIndex代码,我可以毫无问题地在字母之间来回导航。
发布于 2012-03-29 04:30:29
在TTStripTab中没有自动选择TTTabItem的功能。
您必须扩展TTTabStrip并添加此函数:
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)setSelectedTabIndexToCenter:(NSInteger)selectedTabIndex {
if (selectedTabIndex>_tabItems.count-1) {
selectedTabIndex = _tabViews.count-1;
}
[self layoutSubviews];
float horizontalOffset = 0.0f - _scrollView.size.width/2;
for (int i = 0; i < selectedTabIndex; ++i) {
TTTab* tab = [_tabViews objectAtIndex:i];
if (selectedTabIndex-1==i) {
horizontalOffset += tab.size.width*1.5;
} else {
horizontalOffset += tab.size.width;
}
}
if (horizontalOffset<0) {
horizontalOffset = 0;
}
_scrollView.contentOffset = CGPointMake(horizontalOffset, 0);
[super setSelectedTabIndex:selectedTabIndex];
}
此功能将选择特定的选项卡项,并通过更改条带选项卡的偏移量使其居中。
https://stackoverflow.com/questions/9907181
复制相似问题