UITableViewCell中的内容未显示

时间:2013-11-14 09:07:04

标签: ios objective-c uitableview

我遇到UITableViewCell的问题。

我的故事板中有一个视图控制器,它连接到名为MainViewController的视图控制器。它包含一个带有3个标签的UITableViewCellUITableViewCell已与班级MTTableViewCell相关联。

// MTTableViewCell.h

#import <UIKit/UIKit.h>

@interface MTTableViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *mainLabel;
@property (strong, nonatomic) IBOutlet UILabel *statusLabel;

@end

// MTTableViewCell.m

#import "MTTableViewCell.h"

@implementation MTTableViewCell

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

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

// MainViewController.m

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

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

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

    NSString *namecell = @"namecell";
    NSString *statuscell = @"statuscell";           
    [cell.mainLabel setText:namecell];
    [cell.statusLabel setText:statuscell];        

    return cell;
}

问题是当我运行MainViewController时没有显示任何内容。我错过了什么?我没有得到任何错误,只是一个空白的记录,包含1个空白记录。

9 个答案:

答案 0 :(得分:2)

查看您的界面构建器 - 您没有“连接”自定义单元格,您应该将其设置为“文件所有者”,因为您实现了视图,而不是设置委托。也许这个提示有帮助吗?

答案 1 :(得分:2)

您没有从主Bundle加载单元格: 使用以下代码,这将适合您:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"FleetAccountCell";

FleetAccountCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[[NSBundle mainBundle] loadNibNamed:@"FleetAccountCell" owner:nil options:nil] objectAtIndex: 0];;
}
    return cell;
}

答案 2 :(得分:1)

试试看这里......你的问题的答案可能是

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

     CustomCell *cell = (CustomCell * )[self.tableView dequeueReusableCellWithIdentifier:@"YOUR CELL NAME" forIndexPath:indexPath];

   // your content cell...


     return cell;
 }

在此处阅读PFQueryTableViewController not showing custom cells

问候:)

答案 3 :(得分:1)

这项工作对我来说..

select

答案 4 :(得分:1)

以这种方式声明TableViewcell

TableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

下面一个不适合我:

TableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

答案 5 :(得分:0)

重写cellForRowAtIndexPath:方法,如下所示

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

        MTTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[NSBundle mainBundle] loadNibNamed:@"CUSTOME_CELL_Nib_NAME" owner:nil options:nil] objectAtIndex: 0];;
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }        

        NSString *namecell = @"namecell";
        NSString *statuscell = @"statuscell";           
        [cell.mainLabel setText:namecell];
        [cell.statusLabel setText:statuscell];        

        return cell;
    }

答案 6 :(得分:0)

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 4;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";
    TableViewCell *cell = (TableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell==nil)
    {
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TableViewCell" owner:self options:nil];
            cell = [topLevelObjects objectAtIndex:0];
    }
    return cell;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

答案 7 :(得分:0)

我遇到了同样的问题,我在tableview委托和数据源中错过了一个连接:

self.yourtableviewname.delegate=self;
self.youtableviewname.datasource=self;

之后它运作良好。

答案 8 :(得分:-1)

你没有实例化mainLabel和statusLabel,所以它们现在是零。你必须在initWithStyle方法中实例化它们。