0

検索しすぎて、いろいろ考えてみましたが、うまくいきませんでした。

私はビューコントローラーを持っており、そのコントローラーにはカスタムセルを持つテーブルビューがあります。アウトレット、データソース、デリゲートを接続しますが、プロジェクトを実行すると、カスタムセルの代わりになります。UITableCellが表示され、データも表示されません。これが私の.hファイルと.mファイルです

#import <UIKit/UIKit.h>
@class SelectMutantCell;
@interface MutantViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>{
UITableView *tableView;
IBOutlet SelectMutantCell *mutantCell;
}

@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) SelectMutantCell *mutantCell;    

- (IBAction)cancel:(id)sender;

@end

これが私の.mファイルです

    @implementation MutantViewController

@synthesize tableView = _tableView;
@synthesize mutantCell = _mutantCell;

NSArray *mutants;

- (void)viewDidLoad
{
    [super viewDidLoad];
    //mutants = [mutants initWithObjects:@"Keko",@"HEHE",@"PEPE", nil];
    UINib *cellNib = [UINib nibWithNibName:@"SelectMutantCell" bundle:nil];
    [self.tableView registerNib:cellNib forCellReuseIdentifier:@"SelectMutantCell"];

}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = @"SelectMutantCell";

    SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    NSLog(@"---");

    cell.nameLabel.text = @"Hehe"];
    cell.descriptionLabel.text = @"hhe";



    return cell;    
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 3;
}

NSLog(@ "---")はデバッグ用であり、実行時に表示されます。問題はにあります

cell.nameLabel.text = @"Hehe"];
cell.descriptionLabel.text = @"hhe";

このブロックは、cell.textLabel.text = "test"と書くと機能しますが、カスタムセルを表示する必要があります。

どんな助けでもありがたいです。

4

3 に答える 3

2

if(cell==nil){} ループを挿入

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = @"SelectMutantCell";
    SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[SelectMutantCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    NSLog(@"---");
    cell.nameLabel.text = @"Hehe"];
    cell.descriptionLabel.text = @"hhe";
    return cell;    
}
于 2012-08-03T10:28:48.457 に答える
0

メソッドを見るとcellForRowAtIndexPath:、セルを初期化することはありません。次のようにしてみてください。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = @"SelectMutantCell";

    SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"SelectMutantCell" owner:nil options:nil];
        for(id currentObject in topLevelObjects) {
            if([currentObject isKindOfClass:[SelectMutantCell class]]) {
                cell = (SelectMutantCell *)currentObject;
                break;
            }
        }
    }
    NSLog(@"---");

    cell.nameLabel.text = @"Hehe"];
    cell.descriptionLabel.text = @"hhe";



    return cell;    
}
于 2012-08-03T10:30:52.177 に答える