自定义UITableViewCell不显示它的内容

时间:2014-04-24 20:25:16

标签: xcode uistoryboard

在Xcode 5.1中,使用StoryBoards,我无法获得自定义UITableViewCell来显示它的内容。单元格出现 - 我可以点击选择它 - 但标签文本不会出现。

我已经给Cell我的自定义类GCell和标识符MyCell

我已将IBOutlets连接到原型单元格中的标签。

#import <UIKit/UIKit.h>

@interface GCell : UITableViewCell

@property (strong, nonatomic) IBOutlet UILabel *nameLabel;

@end

在我的扩展UITableViewController的类中,我有

@implementation PayGroupViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    NSLog (@"[PayGroupViewController] initWithStyle");

    self = [super initWithStyle:style];
    if (self) {

    }
    return self;
} 

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.delegate = self;
    self.tableView.dataSource = self;

  //  [self.tableView registerClass:[GCell class] forCellReuseIdentifier:@"MyCell"];

    _groups = [NSMutableArray arrayWithCapacity:20];

    GroupModel *gm = [[GroupModel alloc] init];
    gm.title = @"DINNER";
    gm.names = [NSMutableArray arrayWithCapacity:10];
    [gm.names addObject:@"Me"];
    [gm.names addObject:@"Albert"];
    [_groups addObject:gm];

    NSLog (@"[PayGroupViewController] viewDidLoad. [self groups].count:%d" ,[self groups].count);

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog (@"[PayGroupViewController] tableView. [self groups].count:%d" ,[self groups].count);
    return [self groups].count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog (@"[PayGroupViewController] tableView cellForRowAtIndexPath");
    GCell *c = (GCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
    GroupModel *group = [self.groups objectAtIndex:indexPath.row];

    NSLog (@"[PayGroupViewController] group.title: %@",group.title); // Outputs "DINNER"

    c.nameLabel.text = group.title; // It does not show up
    NSLog (@"[PayGroupViewController] cell: %@",c); // outputs <GCell: 0x9976ed0, etc. so it does exist
    NSLog (@"[PayGroupViewController] cell.nameLabel: %@",c.nameLabel); // outputs (null)

    return c;
}

此外,如果有人关心的话,这里是整个xCode项目。

http://www.brainjelly.com/WhoPaid.zip

请注意,原型单元格有一个Disclosure Indicator Accessory,但也不会出现。

谢谢......我已经在这个问题上广泛关注其他帖子,但这些解决方案都没有帮助我。

1 个答案:

答案 0 :(得分:2)

您的xCode项目有两个问题。

  1. 您不应在代码中为原型单元格注册自定义单元格类。故事板为您做到了这一点。当您注册同一个类时,您基本上会覆盖由storyboard创建的类。
  2. 在原型单元格中有一个名为“title”的未定义插座,它连接到Content View。定义或删除它。
  3. 在这些之后,清除项目并重新编译,应该没问题。