1

テーブルビューの各セルに数字を示すラベルを表示したいのですが、行をクリックしたとき (セルが強調表示されているとき) にのみラベルが表示されます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UILabel *label;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        label = [[UILabel alloc] initWithFrame:CGRectMake(200,10, 15, 15)];
        label.tag = 1;
        [cell.contentView addSubview:label];
        [label release];
    }
    else {
        label = (UILabel *)[cell viewWithTag:1];   
    }
    if (indexPath.row == 0) {
        cell.textLabel.text = @"Photos";
        label.text = [NSString stringWithFormat:@"%d",1];
    }
    return cell;
}
4

4 に答える 4

4

私は同じ問題を抱えていましたが、カスタムラベルをサブビューとして追加する前に textlabel のテキストを設定することで解決しました。

...
cell.textLabel.text = @"X";
...
[cell.contentView addSubview:label]
于 2010-07-27T03:24:53.160 に答える
1

textLabelのプロパティを更新するUITableViewCellと、遅延して が作成UILabelされ、セルのサブビューに追加されます。通常、textLabelと サブビューを に追加することを組み合わせて使用​​することはありませんが、使用する場合は、ビューがサブビューの上に配置されていないcontentViewことを確認する必要があります。textLabelcontentView

于 2009-09-16T04:24:36.197 に答える
0

まず、これは 3.0 をターゲットにしていると思います。Apple は 3.0 で UITableViewCells の作成方法を変更したため、それに移行する必要があります。-initWithFrame:reuseIdentifier:廃止されました。

とはいえ、考えられる問題は、ビルトインがtextLabel追加されたラベルに干渉している、おそらく重複していることです。新しい組み込みスタイルのいずれかがニーズを直接満たしているかどうかを最初に確認する必要があります。そうでない場合は、独自のビューを使用するか、組み込みのビューのみを使用して、場合によってはそれらを再配置することをお勧めします。それらを再配置したい場合、Appleは cell をサブクラス化し、オーバーロードすることを提案してい-layoutSubviewsます。また-tableView:willDisplayCell:forRowAtIndexPath:、サブクラス化せずに最終的なセル レイアウトを行うのに適した場所でもあると思います。

于 2009-09-16T04:39:56.277 に答える