1

我想在表格的行中设置 UILabel ,但问题是应用程序重新启动时每次标签的数量都不同。清除我要创建具有动态行和列的表的更多详细信息。行是自己设置的,但是在列中我设置的标签也是动态的,那么每次新的 Web 服务调用时如何设置该标签?

前任。

行列

A1 b11 b12 ....b1n

A2 b21 b22 ....b2n

A3 b31 b32 .......b3n 。.

bm1 bm2 ..bmn

其中 A 是行或b 是列

4

5 回答 5

2

例如,您可以有一个名为 rowData 的可变数组。在您的 init/initWithCoder/etc 方法中,您可以创建另一个名为 columnData 的可变数组,例如它可以包含每个标签的数据。将每一行的 columnData 对象添加到 rowData。

对于您的 cellForRowAtIndexPath 方法,您可以执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

if (!cell) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];

    int row = [indexPath row];
    int i = 0;
    int nLabels = [[rowData objectAtIndex:row] count];
    UILabel *label;

    NSLog([NSString stringWithFormat:@"%d labels", nLabels]);

    for (i = 0; i < nLabels; i++) {
        NSLog([NSString stringWithFormat:@"%d", i]);
        label = [[[UILabel alloc] initWithFrame:CGRectMake(cell.frame.origin.x + (i * 40), cell.frame.origin.y, 40, cell.frame.size.height)] autorelease]; //replace 40 with desired label width
        label.textColor = [UIColor grayColor];
        label.backgroundColor = [UIColor clearColor];
        // set the label text here

        [cell.contentView addSubview:label];

        NSLog([NSString stringWithFormat:@"%d subviews", [[cell.contentView subviews] count]]);
    }
}

return cell;

}

于 2012-08-31T07:42:07.523 回答
1

更好的选择是在 UITableViewCell 中创建一个 UITableView 并且你的每个标签都是单元格,你可以禁用内部 tableview 滚动。但是您需要确保已正确计算内部 tableview 高度。

其他解决方案(例如添加 n 个 UIlabel 等)不会让您平滑滚动。

于 2015-06-23T06:33:45.743 回答
0

创建具有您可能需要的最大标签数的单元格。使他们的标签为 1,2,3,4... - 增加数字。每次要求您在表格旁提供一个单元格时,您要么取一个旧单元格,要么取一个新单元格,决定需要多少标签,使该范围的标签可见(即 label.hidden = NO;),然后隐藏另一个标签。您显然需要更改可见标签的文本。

于 2012-08-27T11:33:26.717 回答
0

您使用标记方法和 indexpath.row。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

            if (!cell) {
                      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
                      for (i = 0; i < n; i++) {
                              label = [[UILabel alloc] initWithFrame:CGRectMake (i * yourWidth, 0, yourWidth + 5, yourHight)]; 
                              label.textColor = [UIColor blueColor];
                              label.tag = (indexPath.row)*100 + i  //you can create n labels in a row.
                              label.text = [NSString stringWithString:@"%d",label.tag]; 
                              [cell.contentView addSubview:label];
                        }
            }

        return cell;

} 

我想这会对你有所帮助。

于 2012-08-31T09:09:38.153 回答
0

您应该考虑使用不同的视图,例如DTGridView

于 2012-08-31T09:32:46.210 回答