0

Interface Builder でカスタム セルを作成し、そのカスタム UITableViewCell クラスを作成しましたが、ロードしても変更は加えられません。カスタムクラスに次のコードがあります。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
    {
        // Initialization code

        //Get the wedding date and display it
        myLabel.text = @"Hello";
    }
    return self;
}

myLabel はヘッダーで宣言され、プロパティがあり、Interface builder でリンクされていますが、アプリを実行してテーブルを表示すると、「Hello」テキストが表示されません。何か案は?

ありがとう。

編集:

私は nib ファイルを使用していません。ストーリーボード内の UITableViewController にあります。さらに、以下の cellForRowAtIndexPath コードは次のとおりです。必要なセル識別子を配列に入力し、その配列を作成するだけです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier;

    for (int cell = 0; cell <= [tableCellsArray count]; cell++) 
    {
        if ([indexPath row] == cell) 
        {
            CellIdentifier = [tableCellsArray objectAtIndex:cell];
        }
    }

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...

    return cell;
}
4

2 に答える 2

0

UITableViewCell のカスタマイズについて説明しているApple のドキュメントを参照してください。

上記のページで、pl。リスト 5-5 を参照してくださいLoading a cell from a nib file and assigning it content。nib ファイルを使用したセルのカスタマイズについて明確に説明されています。

于 2012-04-06T17:01:28.237 に答える
0

セルをどのように作成しますか? Nib からロードしますか、それとも割り当てますか? 割り当てる場合は、インスタンス フィールド (myLabel など) を適切に初期化する必要があります。ニブからセルをロードする場合、私は恐れています

  • (id) initWithCoder:(NSCoder *)aDecoder

オーバーライドする init メソッドです。

とにかく、そこを通過することを確認するためにブレークポイントを配置し、myLabel を出力して、正しく初期化されていることを確認することができます。

- 編集

nib を使用してセル ビューをカスタマイズしたい場合、initWithStyle:reuseIdentifier: メソッドを使用してセル ビューを初期化することはできません。

initWithStyle:reuseIdentifier: を使用することは、独自の実装によってすべてのビューを初期化することを意味します (たとえば、すべてのビューを割り当て、初期化し、構成します。xib ファイルは使用しません)。

xib ファイルを使用する場合は、NSBundle の loadNibNamed:owner:options: メソッドを使用する必要があります。

通常、私は2つの実装を見てきました:

[[NSBundle mainBundle] loadNibNamed:@"" owner:self options:nil];

この実装では、UIViewController サブクラスを所有者として指定して xib をロードします。xib で、File Owner クラスが UIViewController サブクラスであることを確認します。次に、セルを UIViewController サブクラスのプロパティにリンクし、loadNibNamed:owner:options: を呼び出すと、UIViewController サブクラスのプロパティで使用できる新しいセル ビューが割り当てられて初期化されます。これは、Apple のドキュメントで推奨されていることです。

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"" owner:nil options:nil]; UITableViewCell myCustomCell = [nibObjects objectAtIndex:0];

この実装では、所有者を xib ファイルに渡さず、必要なオブジェクトを取得します。xibファイルにセルビューであるオブジェクトが1つしかないことを確認してください。セル作成のプロパティを持つのは「奇妙」だと思うので、このアプローチを好みますが、xib ファイルの内容がカスタム セル ビューを 0 インデックスに保つようにする必要があります。

どの方法を選択しても、xib をロードすると呼び出されることを覚えておいてください。

initWithCoder: initWithStyle:reuseIdentifier の代わりに:

最後に、xib ファイルでカスタム UITableCellView を使用する方法を例を挙げて説明している Apple ドキュメントへの Aadhira のリンクを参照することをお勧めします。

于 2012-04-06T17:04:40.603 に答える