名称未显示在UITableView中

时间:2015-04-28 10:37:11

标签: objective-c uitableview ios8 xcode6.3

我想在使用故事板的https://github.com/singhson/Expandable-Collapsable-TableView上做一个例子。我正在尝试使用xib文件。我应该在cellForRowAtIndexPath中进行哪些更改,以便获得所需的输出?我试过这样的事情

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier=@"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if(cell==nil)
    {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    NSString *Title= [[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Name"];

    [self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name" ] indexPath:indexPath];
//    return [self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name"] indexPath:indexPath];

    return cell;

}

- (UITableViewCell*)createCellWithTitle:(NSString *)title image:(UIImage *)image  indexPath:(NSIndexPath*)indexPath
{
    NSString *CellIdentifier = @"Cell";
    ExpandableTableViewCell* cell = [self.menuTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UIView *bgView = [[UIView alloc] init];
    bgView.backgroundColor = [UIColor grayColor];
    cell.selectedBackgroundView = bgView;
    cell.lblTitle.text = title;
    cell.lblTitle.textColor = [UIColor blackColor];

    [cell setIndentationLevel:[[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"level"] intValue]];
    cell.indentationWidth = 25;

    float indentPoints = cell.indentationLevel * cell.indentationWidth;

    cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size.width - indentPoints,cell.contentView.frame.size.height);

    NSDictionary *d1=[self.itemsInTable objectAtIndex:indexPath.row] ;

    if([d1 valueForKey:@"SubItems"])
    {
        cell.btnExpand.alpha = 1.0;
        [cell.btnExpand addTarget:self action:@selector(showSubItems:) forControlEvents:UIControlEventTouchUpInside];
    }
    else
    {
        cell.btnExpand.alpha = 0.0;
    }
    return cell;
}

现在我正在获取可以展开或折叠的表,但我没有在表视图中显示该名称。我应该做些什么改变呢?请帮忙。

1 个答案:

答案 0 :(得分:1)

我的建议:

  • 使用dequeueReusableCellWithIdentifier:forIndexPath:(在没有注册课程的情况下注意)而不是dequeueReusableCellWithIdentifier:,因为如果你没有注册一个类或者nib,那么最后一个不会崩溃标识符,仅返回nil。
  • 确保您将ExpandableTableViewCell类的“lblTitle”与界面构建器中的xib正确链接。
  • 检查此说明:cell.lblTitle.text = title;如果标题是零或者即使你的标题是零也是如此。
  • 检查lblTitle是否超出范围(您正在更改此行中的contentView:cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size.width - indentPoints,cell.contentView.frame.size.height))
  • 您是否在viewDidLoad中使用'registerClass:forCellReuseIdentifier:'注册ExpandableTableViewCell? 希望它有所帮助。