0

我制作了一个带有表格视图和数据源(核心数据)的应用程序。在这个表中,我将几个按日期排序的任务分组,并且我有这个分段控制。我希望表格仅加载晚于或等于今天日期的任务,当用户点击第二段时,我想显示所有任务,如果他点击第一段,则表格只能再次显示较晚日期的任务。

问题是:

1 - 我使用 fetchedResultsController 与 indexPath 关联来获取托管对象。

2 - 我使用 insertRowsAtIndexPaths:withRowAnimation: 和 deleteRowsAtIndexPaths:withRowAnimation: 方法使单元格出现和消失。这与我的 indexPaths 混淆了,如果我想在删除行后转到特定行的详细视图,它与不同的 indexPath 相关联。

这个问题是通过我所做的一种方法解决的,但我仍然有 indexPaths 和单元格的其他问题,而且在我看来,每个问题都已经解决了。

有一种简单的方法可以做到这一点吗?

我试图只是隐藏单元格而不是删除,它工作得很好,但是在隐藏单元格的地方是一个空白空间,如果有办法隐藏这些单元格并使非隐藏单元格占据空白空间我认为这将是最简单的方法。

任何人都可以帮助我吗?

4

2 回答 2

1

set the height of the cell to 0 when it hides, and set the height back to the original value when it appears.

TableViewController.h

@interface TableViewController{
CGFloat cellHeight;
}

TableViewController.m

- (void)cellHeightChange{
//if you need hide the cell then
cellHeight = 0;
cellNeedHide.hidden = YES;
//if you need hide the cell then
cellHeight = 44; // 44 is an example
cellNeedHide.hidden = NO;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    switch (section) {
    // for example section 0 , row 0 is the cell you wanna hide.
    case 0:
        switch (row) {
            case 0:
            return cellHeight;
        }
    }
}
于 2012-05-26T13:51:56.367 回答
1

当用户点击一个段时,在您的托管对象上执行一个新的获取请求,为您提供一个适当的数组(所有日期的数组,或者更大/相等的日期)。然后使用reloadData数据源中的这个新数组在 tableView 上使用。

或者

给要隐藏的单元格的高度为 0?

于 2012-05-26T13:58:47.033 回答