0

ストーリーボードで Cell Prototype の Connect アウトレットをたどりました

だから私のアウトレットは接続されています。私はこの方法を持っています:

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

    HomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        cell = [[HomeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] ;
    }

    // Configure the cell.
    Group * group = [self.groups objectAtIndex: [indexPath section]];
    Friend  * friend = [[group friends ]objectAtIndex: [indexPath row]];
    NSLog(@"%@", friend.name);

    [[cell nameLabel] setText:friend.name];
    [[cell statusLabel] setText:friend.status];
    [[cell picImageView] setImage:[UIImage imageNamed:@"similey.jpg"]];
    return cell;
}

正常にコンパイルされますが、セルは空白で何も表示されません。助言がありますか?

4

2 に答える 2

0

dequeueReusableCellWithIdentifier呼び出しと一致するように、ストーリーボードのセルの識別子を「Cell」に設定しましたか?

Interface Builderはオブジェクトを作成し、それらを複製できるようにします。クラスの定義は変更されません。したがって、Interface Builderでクラスのインスタンスを設計する場合は、その単一のインスタンスのみを設計することになります。ストーリーボードとNIBの読み込みは、そのインスタンスを複製するために使用できるメカニズムです。

IBでクラスのインスタンスを設計し、後でそのクラスの直接alloc + initを実行すると、InterfaceBuilderのインスタンスから完全に独立したインスタンスになります。

次のコード行は、ストーリーボード内のインスタンスが、クラスを直接alloc+initしたときに何が起こるかに影響を与えることを期待していることを示しています。

[[HomeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]

あなたがその線にぶつかったことがあるなら、それはおそらくあなたの問題です。ストーリーボードにセルを作成した場合、その行は表示されないはずです。ストーリーボードで作成されたセルの場合、-dequeueReusableCellWithIdentifier:は、識別子を一致させた場合、常にセルのインスタンスを返します。

于 2013-02-18T23:31:04.613 に答える
-2

HomeCell はカスタム UITableViewCell であるため、再利用キューには入れられないため、テーブル ビューは registerClass メソッドを介して次のように認識する必要があります。

- (void)viewWillAppear:(BOOL)animated
{
   ...
   [self.tableView registerClass:[HomeCell class] forCellReuseIdentifier:@"Cell"];

}
于 2013-02-18T00:42:12.050 に答える