0

(このサイト)で学んだカスタム セルを使用しています。私の古いアプリでは動作しますが、このアプリでは動作しない理由がわかりません。上記のコードを実行すると、行 ( NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];) に緑色のエラーが表示されたままになります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    CellIdentifier = @"CustomCell";
    PCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil){
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (PCustomCell *) currentObject;
                break;
            }
        }
    }
    P2Dict = [P2Rows objectAtIndex: indexPath.row];
    cell.Contracts.text = [P2Dict objectForKey:@"Contracts"];
    return cell;
}

http://ar2.co/SS2.png

4

4 に答える 4

1

カスタムセルxib.fileは、テーブルセルを取得します。custom.mファイルに実装されます。ビューコントローラでは、viewcontroller xibを介して、またはプログラムでテーブルビュー全体を設定します。選択により、デリゲートメソッドとデータソースメソッドを設定します。データソースメソッドでカスタムセルを記述します。以下に書かれたコード

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

static NSString *CellIdentifier = @"Custom";

CustomTableCell *cell = (CustomTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell)
{
    UINib *nib = [UINib nibWithNibName:@"CustomTableCell" bundle:nil];
    NSArray *arr = [nib instantiateWithOwner:nil options:nil];
    cell = [arr objectAtIndex:0];
}

cell.textLabel.text =[arr objectAtIndex:indexPath.row];

}

于 2012-08-09T17:59:37.723 に答える
0

以下のプロセスを参照してください。カスタム テーブル セルの作成方法はその 1 つです。

VocaTableCell は私の場合です。CustomTableCell を作成します。

ここに画像の説明を入力 ここに画像の説明を入力


#import <UIKit/UIKit.h>

@interface VocaTableCell : UITableViewCell 
{
    UILabel *vocaLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *vocaLabel;

@end

#import "VocaTableCell.h"


@implementation VocaTableCell
@synthesize vocaLabel;

- (void)dealloc {
    [vocaLabel release];
    [super dealloc];
}
@end

以下のコードは、前に参照してください。customTableCell を正しく作成していますか? 以下のリストをチェックしてください。

customTablecell について作成する方法はいくつかあります。

私のやり方はとても人気があります。

  1. File's Owner の CustomTabelCell はNSObjectである必要があります。(非常に重要なデフォルトは多分UITableCellです。ファイルの所有者NSObjectを変更する必要があります(NSObjectの意味はidタイプです!))

  2. CustomTableCell はオブジェクト クラスを CustomTableCell クラスにリンクします。

  3. 参照アウトレット リンクはファイルの所有者ではありません。CustomTableCell に直接リンクする必要があります。


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

    static NSString *CellIdentifier = @"Custom";

    CustomTableCell *cell = (CustomTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell)
    {
        UINib *nib = [UINib nibWithNibName:@"CustomTableCell" bundle:nil];
        NSArray *arr = [nib instantiateWithOwner:nil options:nil];
        cell = [arr objectAtIndex:0];
    }

    cell.textLabel.text =[arr objectAtIndex:indexPath.row];
}
于 2012-08-09T17:30:27.023 に答える
0

あなたのエラーは次のように述べています:「「CustomCell」という名前のバンドルにNIBをロードできませんでした」。だからあなたの問題があります....あなたのxibは何と名付けられていますか?

于 2012-08-09T17:37:51.667 に答える
0

CustomCell.xib に UITableviewCell(PCustomCell) がありましたか? ここにエラーのスクリーンショットを表示する必要があります。それは役に立ちます。

于 2012-08-09T17:29:14.263 に答える