首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Three20 TabStrip

Three20 TabStrip
EN

Stack Overflow用户
提问于 2012-03-28 20:09:22
回答 1查看 291关注 0票数 0

我在我的一个项目中使用TabStrip。选项卡条中的TTTabItems是字母A-Z。当我单击每个字母时,代表导航到另一个页面。

在另一个页面中也有一个TTTabstrip (相同的结构,框架等)。如何在不触发事件的情况下在第二个选项卡条上标记字母表?

我尝试获取字母的整数值mod整数值"a“(这样它将为我带来一个索引)并将其赋给selectedIndex:

代码语言:javascript
运行
复制
unichar letter = [[NSString stringWithString:@"e"] characterAtIndex:0];
/*(k is @"a" unichar)*/
tabBar.selectedTabIndex = letter % kEnglishAlpha;

但是它给了我释放错误。

**更新**

在我在评论中提到的向下钻取详细视图(我有问题的地方)上,我有以下来自tt导航的内容:

代码语言:javascript
运行
复制
tt://listWords/Cat

在视图的加载事件上,在初始化TTTabStrip (它只包含字母A-Z的TTTabItem )和tabBar.delegate = self声明之后,我使用上面的代码“选择”所选的字母。视图的其余部分显示了定义和所有相关内容。通常情况下是这样的,但是当我使用back按钮返回到包含tttableItems (猫、番茄酱、猫薄荷等)的视图时,它会显示已释放控制器。

我的猜测是,使用tabselected委托代码并设置tabindex,它会立即触发tab selected代码,这就是问题所在。如果我不使用selectedTabIndex代码,我可以毫无问题地在字母之间来回导航。

EN

回答 1

Stack Overflow用户

发布于 2012-03-29 04:30:29

在TTStripTab中没有自动选择TTTabItem的功能。

您必须扩展TTTabStrip并添加此函数:

代码语言:javascript
运行
复制
///////////////////////////////////////////////////////////////////////////////////////////////////
- (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];
}

此功能将选择特定的选项卡项,并通过更改条带选项卡的偏移量使其居中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9907181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档