0

ラベルを変更できるInterfaceBuilderで再利用可能なTableViewCellを作成するにはどうすればよいですか?

これも可能ですか?私が理解していることから、Appleは最近Interface BuilderでカスタムTableViewCellを提供しているので、これは可能でしょうか?

追伸 IBのTableViewCellに関する質問がたくさんあることは知っていますが、ラベルを機能させる人は見つかりませんでした。

4

2 に答える 2

1

再利用されているセル内のすべてを変更できます。IBで作成するラベルをカスタマイズするには、IB自体にタグを設定し、同じタグを使用してラベルをフェッチする必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    MyCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil)
    {
        cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }


    // Configure the cell.
    //Do anything here with the labels. Even add or remove them.
    (UILabel*) label1 = (UILabel*)[cell viewWithTag:1];
    return cell;
}
于 2011-08-29T11:50:46.830 に答える
0

以前は受け入れられた回答と同じ方法でそれを行っていましたが、Pascalで「goto」を使用しているように、常にタグを使用していると感じていました。汚れた感じ。しかし、多分それは私だけです、タグはうまく機能します。

ただし、別の方法があります。UITableViewCellをサブクラス化し、IBOutletプロパティを作成し、IBで接続し、cellForRowAtIndexPath:コードでプロパティを参照します。そのようです:

interface MyCustomCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *myAwesomeLabel;

@end

セルのクラスをIBのMyCustomCellに設定することを忘れないでください。

ここに画像の説明を入力してください

その後、あなたはそのように直接IBであなたの財産を接続することができます

ここに画像の説明を入力してください

そして、テーブルビューデータソースで、このプロパティにアクセスできるようになりました

#import "MyCustomCell.h"


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

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCell"];

    if (cell) {
        cell.myAwesomeLabel.text = @"Hello, World!";
    }

    return cell;

}

タグを使用するとエラーが発生しやすく、タグを多数使用するとすぐに混乱する可能性があります。

于 2015-05-14T09:37:38.317 に答える