8

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

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

-(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 方法返回的数组中的对象很长,我想换行。

有谁知道怎么做?

在此处输入图像描述

4

5 回答 5

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上,轻松完成!

于 2012-05-08T09:11:07.410 回答
0

It seems that your answer is no but the following should solve the problem behind your question.

I would use this function instead tableView:viewForHeaderInSection: on the UITableViewDelegate protocol. More information can be found in the documentation here UITableViewDelegate Docs. Note – tableView:heightForHeaderInSection: must also be implemented. This combination of functions will allow you to return a view with a UILabel subview that has numberOfLines set to 0, i.e. as many as necessary, and the text set to whatever value you need.

于 2012-05-04T17:34:24.903 回答
0

只需str在添加之前检查'' NSMutableArray,它是否有一个或多个单词?并选择您想要的范围并将其添加到您的数组中..

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

于 2012-05-09T15:15:49.703 回答
0

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

于 2012-05-07T20:01:23.873 回答
0

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

于 2012-05-08T09:17:44.970 回答