展开Tableviewcell,在底部显示标签

时间:2014-09-29 17:05:04

标签: ios objective-c uitableview

当您选择一个tableviewcell时,它会从44像素扩展到100像素,当您取消选择时,它将再次缩小为44像素。

在故事板中,我将我的单元格定制为标准的100像素,并添加了3个标签。一个在顶部,两个在底部(底部的2个标签不应该可见并隐藏在底部)。

当我运行我的应用程序时,每个单元格将获得44像素的高度。底部的两个标签在正确的x坐标处可见,但在每个其他单元格之上。 像这样:

This is whats happening to my cells

在viewDidLoad中:

self.expandedIndexPath = [NSIndexPath indexPathForRow:7 inSection:1];

方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Compares the index path for the current cell to the index path stored in the expanded
    // index path variable. If the two match, return a height of 100 points, otherwise return
    // a height of 44 points.

    if ([indexPath compare:self.expandedIndexPath] == NSOrderedSame) {
        return 100.0; // Expanded height
    }
    return 44.0; // Normal height
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    UILabel *DateName = (UILabel *)[cell viewWithTag:100100];
    DateName.text = _objects[indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryNone;
    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView beginUpdates];

if ([indexPath compare:self.expandedIndexPath] == NSOrderedSame) {
    self.expandedIndexPath = nil;
} else {
    self.expandedIndexPath = indexPath;
}

[tableView endUpdates];
}

如何在单元格扩展到100像素之前隐藏标签?

1 个答案:

答案 0 :(得分:1)

将单元格设置为clipToBounds = YES;