使细胞在TableView中显示和消失

时间:2012-05-26 13:43:48

标签: objective-c ios cocoa-touch uitableview

我使用表格视图和数据源(核心数据)制作应用程序。在这个表中,我按日期排序了几个任务,我有这个分段控件。 我希望表只加载以后或等于今天日期的任务,当用户点击第二段我要显示所有任务时,如果他点击第一段,表必须再次只显示更晚的日期任务。

问题是:

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

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

这个问题是通过我所做的方法修复的,但我仍然有indexPaths和cell的其他问题,而且在我看来,每个问题都解决了我的问题。

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

我试图隐藏单元格而不是删除,它工作正常,但在隐藏单元格的位置是一个空白区域,如果有办法隐藏这些单元格并使非隐藏单元格占用空白我认为这将是最简单的方式。

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:1)

隐藏时将单元格的高度设置为0,并在出现时将高度设置回原始值。

<强> 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;
        }
    }
}

答案 1 :(得分:1)

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

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