如何实现UITableView部分

时间:2012-02-19 02:08:48

标签: ios uitableview

这是我的情况。我正在构建一个RSS应用程序。我需要根据一天中的时间在一个部分中显示我的故事。有3个类别(AM Stories,PM Stories和Editorials)。我直接从RSS提要中获取这些类别。

最好的解决方法是什么?将永远存在编辑,并且将始终存在AM故事 - 只有PM故事是可变的。目前,我已经制作了三个数组来保存每个故事的RSS项目。我挂断了将正确数量的部分返回到UITableView数据源以及如何知道哪个部分#对应于相应的部分(即第0部分是否等于社论或是否等于AM故事?)

我非常感谢你能给我的任何帮助。

1 个答案:

答案 0 :(得分:1)

你的tableViews部分将按顺序编号,从0开始。如果你没有PM故事,那么AM故事将是第0部分,社论将是第1部分。如果你有PM工作,那么AM故事将是第0部分,PM故事将是第1部分,社论将是第2部分。

根据您的PM Stories数组是否为空,您可以从numberOfSectionsInTableView:返回正确数量的部分:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if ([pmStoresArray count] > 0) {
        return 3;
    } else {
        return 2;
    }
}

然后在cellForRowAtIndexPath:中,您可以使用相同的逻辑来确定该单元属于哪个部分的类别:

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

    if (indexPath.section == 0) {
        // am stories cell

    } else if (indexPath.section == 1 && [pmStoriesArray count] > 0) {
        // pm stories cell

    } else {
        // editorials cell

    }

    return cell;
}