0

カスタムUITableViewCellで本当に奇妙な問題が発生しています。Interface Builderに「ThreadCell」という識別子を持つセルがあり、いくつかのカスタムラベルが付いています。これらのラベルにはタグが付けられているので、アクセスできます。

私のコードでは、次のことを行っています。

static NSString *CellIdentifier = @"ThreadCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: @"ThreadCell"];
}

Person *person = [self.people objectAtIndex: indexPath.row];
UILabel *nameLabel = (UILabel *)[cell viewWithTag: 0];
nameLabel.text = person.nickname;

return cell;

これは、1つの例外を除いて、正常に機能しているようです。TableViewは次のように描画します。

細胞

これは明らかに私のカスタムセルではありません。しかし、奇妙なことに、セルをタップすると、次のように表示されます。

細胞

これ私のカスタムセルで、デフォルトのセルの後ろに描画されます。何?!テキストビューのタイトルをどこにも設定していないので、これがどのように起こっているのかわかりません。そのため、最初のジョン・スミスがどこから来たのかわかりません。

誰かアイデアはありますか?

4

1 に答える 1

1

UITableViewCellコードでは、カスタムセルのインスタンスではなく、プレーンを割り当てます。reuseIdentifierinを設定するだけでinitWithStyleは、カスタムセルクラスのインスタンスをロードできません。

iOS 5以降用に開発する場合はregisterNib:forCellReuseIdentifier:、カスタムセルを含むNIBファイルを登録するために使用できます。dequeueReusableCellWithIdentifier:その後、常にそのNIBのインスタンスを返します。

于 2012-08-18T22:06:15.140 に答える