是否可以在UITableViewSectionIndex中包装单词?

时间:2012-04-26 06:54:35

标签: iphone objective-c ios uitableview

我想在UItableView右侧的部分索引中包装该单词。

问题是,如果字长增加,节索引宽度也会增加,表视图单元格内容视图大小也会减小。我不想显示截面索引数组对象的子字符串。因为我想显示整个单词我必须包装它。

-(NSArray*) sectionIndexTitlesForTableView:(UITableView *)tableView
{
    NSMutableArray *array = [[NSMutableArray alloc] init];

    for (int i = 0; i <[keys count]; i++) {
        NSString *str = [self.keys objectAtIndex:i];
           [array addObject:str];
    }

    NSArray *a =[NSArray arrayWithArray:array];
    [array release];
    return a;
}

数组中的对象返回sectionIndextitle方法是冗长的,我想包装该单词。

任何人都知道如何做到这一点?

enter image description here

5 个答案:

答案 0 :(得分:2)

您只能创建自己的“部分索引视图”作为自定义UIView

并且很乐意这样做

只计算你的tableview的高度,计算你的部分的数量

然后在

中绘制你的章节标题
- (void)drawRect:(CGRect)rect

然后检测触摸事件

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

计算您触摸的部分,然后调用tableview方法

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

然后把它放在你的tableview上,eazy完成!

答案 1 :(得分:0)

似乎您的回答是否定的,但以下内容应该可以解决您问题背后的问题。

我会在UITableViewDelegate协议上使用此函数代替tableView:viewForHeaderInSection:有关详细信息,请参阅此处的文档UITableViewDelegate Docs。注 - tableView:heightForHeaderInSection:也必须实现。这些函数组合将允许您返回一个带有UILabel子视图的视图,该子视图将numberOfLines设置为0,即根据需要添加,并将文本设置为您需要的任何值。

答案 2 :(得分:0)

无法将节索引包装到多行。这在默认UI中没有意义。自定义标题是您完成此任务的最佳选择。

答案 3 :(得分:0)

为部分创建自定义标题标题。在那里,您可以使用标签并根据标题的长度为其分配行数。您还需要相应地设置节标题的高度。

答案 4 :(得分:0)

str中添加“NSMutableArray”之前,请检查它是否有一个或多个字?  并选择您想要的范围并将其添加到您的数组中..

使用NSmakeRange来制作要在每个部分的索引中显示的字符范围..