0

このuitableviewような画像を作りたいです。サーバーからデータをロードし、行の列に値を割り当てます。スタックのリンクを見ましたが、役に立ちませんでした。 私のコードを更新して ください:-

#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;
}

しかし、私は与えられた画像のように表示したいです。だから私がこの問題を克服するのを手伝ってください。前もって感謝します。

4

1 に答える 1

2

さて、これはあなたが提示する方法よりも少し多くのコードを必要とします。私の提案は、単一のNSStringを使用する代わりに、フィールドごとにUILabelを作成できることです。cell.textLabelを使用せずに、cell.contentViewにコンテンツを追加すると、各ラベルの色、背景色、およびラベルのサイズを管理できます。「グリッド」の外観は、contentViewに白色を割り当て、たとえば各ラベルの背景に緑色を割り当てることで表現できます。たとえば、セルが作成された後:

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   
    }
}

お役に立てれば。

于 2011-10-10T14:43:37.000 に答える