如何在横向模式下创建像GRID一样的UITableView?

时间:2011-10-10 09:25:58

标签: uitableview iphone-sdk-4.3

我想创建uitableviewthis图片。从服务器加载数据并将值分配给Row的列。我看到了堆栈的link,但对我没有帮助。 的更新 我的代码: -

#pragma mark UITableViewDelegate methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
    return [modelArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
    static NSString *AutoCompleteRowIdentifier = @"AutoCompleteRowIdentifier";
    cell = [tableView dequeueReusableCellWithIdentifier:AutoCompleteRowIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AutoCompleteRowIdentifier] autorelease];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleGray;      
    // Configure the cell...
    RankModel *model = [modelArray objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@    %@     %@     %@     %@     %@",  model.level, model.name, model.score, model.rightAnswersCount, model.currentRank, model.country];
    return cell;
}

但我想像给定的图像一样显示。所以请帮助我克服这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:2)

这将需要比您提供的方法更多的代码。 我的建议是你可以为你的每个字段创建一个UILabel,使用单个NSString。不要使用cell.textLabel,而是在cell.contentView上添加您的内容,然后您可以管理每个标签的颜色,背景颜色和标签的大小。通过为contentView指定白色并为每个标签的背景指定绿色,“网格”外观可以是100。例如,在创建单元格之后:

cell.contentView.backgroundColor = [UIColor clearColor];

UILabel* aLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0.0, 100, 44)];
aLabel.tag = indexPath.row;
aLabel.textAlignment = UITextAlignmentLeft;
aLabel.textColor = [UIColor whiteColor];
aLabel.text = @"Test";
aLabel.backgroundColor = [UIColor greenColor];
[cell.contentView addSubview:aLabel];
[aLabel release];

在201或更高时间开始您的下一个标签,留下白色垂直线条的印象。 将行索引保留在标记中,以便您可以在以下位置管理其他颜色:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell
                                                        *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (indexPath.row == 0 || indexPath.row%2 == 0) {
        // use light green, get access to the labels via [cell.contentView viewWithTag:indexPath.row]
    } else {
        // use dark green   
    }
}

希望这有帮助。