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

我遇到过同样的问题。要解决它,请检查以下内容:

  • 在您的 nib 文件中,您已经删除了默认创建的根视图,并从 XCode 对象浏览器中拖动了一个 UITableViewCell,然后将 UItableViewCell 的自定义类型设置为您的子类 SelectMutantCell

  • 你已经链接了网点

  • 您已将单元标识符添加到 SelectMutantCell,就像您在情节提要中所做的那样

  • 最后但并非最不重要的一点是,您没有在情节提要 TableView 中添加相同的单元格,它将在情节提要中的单元格和 [self.tableView registerNib:cellNib forCellReuseIdentifier:@"SelectMutantCell"] 中的单元格之间发生冲突;

于 2012-08-24T17:36:55.003 回答
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 回答