3

UITableView のカスタム UITableViewCell

ここに画像の説明を入力

このスクリーン ショットでは、UIViewController に UITableView を追加し、いくつかのラベルを追加して UITableViewCell をカスタマイズしたことがわかります。しかし、問題はアプリケーションを実行するときです。すべてのセルが空です。ラベルは一切ありません。

空のセル

何が問題なのかわかりません。Web を検索してチュートリアルを読みましたが、解決できませんでした。

4

4 に答える 4

4

少しの努力で、この問題を自分で解決しました。
実際、カスタムセルを作成するときは、次のことを行う必要があります。

  1. ストーリーボードセルにラベル、画像などを設定します。
  2. カスタムセルクラス(UITableViewCellから継承)(CustomCell.h&.m)を作成し、CustomCell.hは、ラベルや画像などのiboutletとしてすべてのプロパティを持ち、実装時にそれらをすべて合成します。
  3. このカスタムクラスを作成したら、ストーリーボードに戻り、カスタムセルを選択し、そのクラスをCustomCellに変更して、「MyCustomCell」などの識別子を付け、カスタムセルを右クリックして、ラベルなどでIBOutletsを接続します。
  4. 次に、UITableViewを実装しているクラスにCustomCellクラスをインポートし、CustomCellクラスで定義したプロパティを使用します。

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *MyIdentifier = @"MyCustomCell";
    
        CustomCell*cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    
        if (cell == nil)
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                           reuseIdentifier:MyIdentifier] autorelease];
        }
    
        // Here we use the provided setImageWithURL: method to load the web image
        // Ensure you use a placeholder image otherwise cells will be initialized with no image
        [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://example.com/image.jpg"]
                       placeholderImage:[UIImage imageNamed:@"placeholder"]];
            cell.myCustomLabel.text = @"My Text";
        return cell;
    }
    

私はこれをすべて行い、問題は解決しました。デリゲートとデータソースおよびテーブルを接続することを忘れないでください。

これが他の人に役立つことを願っています。

于 2013-03-19T06:03:04.727 に答える
1

少し遅れていますが、ビューの背景色をストーリーボードから Clear Color に設定することで問題を解決できます。

于 2013-03-04T11:20:31.217 に答える
0

tableview のデリゲート メソッドでは、cellforrowatindexpath の中に uitableviewcell があり、このセルの初期化には識別子が必要です。おそらくそれは "cell" または "cellIdentifier" です。

ストーリーボードからセルを選択し、この識別子文字列をストーリーボードに入力するだけで、uitableviewcell の属性インスペクターが残ります。

お役に立てれば.. :)

于 2012-07-05T14:05:02.443 に答える
0

まず、ストーリーボード @"Cell" にセル識別子を設定します

次に、ラベルのタグを設定します

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

// Create
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}



UILabel *lblDate = (UILabel*)[cell viewWithTag:101];
UILabel *lblDistance = (UILabel*)[cell viewWithTag:102];
UILabel *lbltype = (UILabel*)[cell viewWithTag:103];

lblDate.text = [temp objectAtIndex:indexPath.row] valueForKey:@"date"] stringByReplacingOccurrencesOfString:@"-" withString:@"/"]];
lblDistance.text = [NSString stringWithFormat:@"%@ KM",[[temp objectAtIndex:indexPath.row] valueForKey:@"distance"]];

NSString *type = [NSString stringWithFormat:@"%@",[[temp objectAtIndex:indexPath.row] valueForKey:@"distance"]];
if([type isEqualToString:@"0"])
{
    lbltype.text = @"Personal";
}
else
{
    lbltype.text = @"Bussiness";
}
// Configure
return cell;
}
于 2013-03-19T06:12:19.690 に答える