2010-10-12 71 views
1
- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; 
    if (cell == nil) 
    { 
     //cell = [[[CustomCell alloc] initwithidentifier:CustomCellIdentifier] autorelease]; 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     for (id oneObject in nib) 
      if ([oneObject isKindOfClass:[CustomCell class]]) { 
       cell = (CustomCell *)oneObject; 
      } 
    } 

    NSUInteger row = [indexPath row]; 
    NSDictionary *rowData = [self.listData objectAtIndex:row]; 
    cell.nameLabel.text = @"text"; 
    [cell.contentView addSubview: nameLabel]; 
    [cell reloadInputViews]; 

    return cell; 
} 

但名称标签不会显示其新名称。请问我做错了什么? 谢谢!UITableViewCell不显示数据

+0

什么是nameLabels框架?此外,您似乎将nameLabel作为子视图添加到该单元格中,即使它已经在其中。该代码应该可能在初始化时位于customcell类中。这也可能是你为什么没有看到任何变化。 – Ben 2010-10-12 14:44:21

+0

我只是为了试图查看它是否有所作为而添加了该行。我不认为它是需要的 - 既不在这里也不在初始化 – Lilz 2010-10-12 14:48:31

回答

1

我愿意猜测,如果你检查cell.NameLabel,你会发现它是零 - IBOutlet没有通过loadNibNamed:owner:options:正确连接。您确定CustomCell将nameLabel作为适当的出口(即可以通过键值编码到达的出口)吗?苹果对此的参考是here,但确保你有一个setter和getter就足够了。

正如你创建你的NIB,你可能是正确的CustomCell不是文件的所有者?如果它是loadNibNamed:owner:options:显然不应该在self上调用。如果'self'是真正的所有者,那么可能更适合拥有指向CustomCellView而不是通过返回数组进行捕鱼的IBOutlet(也绝对遵从KVC)。

增加,到下面的评论讨论后续:

什么绝对的工作是创造的UITableViewCell的自定义子类与同样性能适合IBOutlets,设置你的表视图的数据源作为文件所有者和使用loadNib以您的类为目标加载NIB的新实例,导致您的插口附加了新实例。然后,您可以使用子类的属性来访问单元格的各种子视图。示例项目:here

+0

不,我确实为标签创建了适当的出口。此单元格出现 - 没有任何值,但 – Lilz 2010-10-13 07:09:33

+0

除非相关成员符合KVC,否则不会装入插座,无论您是否创建了该插座,即使没有插座,视图也会显示。我强烈建议您检查您是否获取cell.NameLabel的nil。 – Tommy 2010-10-13 09:37:52

+0

我不知道我是否清楚,单元出现在其中的所有自定义对象。换句话说,我有一个按钮,一个textview,一个标签和一个图像。但是,所有这些项目都是零。由于出现这些出口已正确设置,对吗? – Lilz 2010-10-13 12:59:56