1

我正在尝试创建一个动态表格,该表格在点击时展开以显示其他内容。我已经到了用来自 NSMutableArray 的信息填充表的地步。我也可以按每个单元格,它会扩大到两倍大小。现在,被证明有点麻烦的下一步是让它在单击单元格时显示新的/替代文本。首先,这是我的设置方法:

    - (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];

        NSString *cellValue = [cellContent objectAtIndex:indexPath.row];
        cell.textLabel.text = cellValue;
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

    }

    return cell;
}

在此之后,我有单元格在按下时扩展的方法:

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    // If our cell is selected, return double height
    if([self cellIsSelected:indexPath]) {
        return kCellHeight * 2.0;
        [cellContent replaceObjectAtIndex:[self cellIsSelected:indexPath] withObject:@"NEW STUFF HERE"];
}

我必须以错误的方式解决这个问题,因为当我触摸单元格时没有任何变化。如何让它在触摸时显示新的/替代文本?任何帮助都会非常棒,我认为这可能很容易,但我目前看不到。

谢谢!

4

1 回答 1

1

您的第二种方法仅在构建或重建单元时触发。您需要通过以下方法明确要求它刷新自身:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

然后在该方法中,您可以调用

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

现在你的重绘方法将被触发,所以你可以在那里处理你想要的任何东西。

于 2012-08-22T18:07:18.793 回答