将NSMutableArrays填充到自定义部分

时间:2011-11-10 08:43:21

标签: iphone uitableview nsmutablearray ios5 tableview

想要将两个NSMutableArray填充到tableView的2个自定义部分;

我有两个NSMutableArray个事件,我想将它们分成现在和今天的部分。

第一部分:

我想从nowEvents数组中删除事件并将它们放入我的第一部分。

EventClass *event = [appDelegate.nowEvents objectAtIndex:indexPath.row];

event.startTime是我活动的开始时间

event.endTime是我活动的结束时间

第二部分: 删除现在发生的事件

EventClass *event = [appDelegate.todayEvents objectAtIndex:indexPath.row];

我想知道的是numberOfRowsInSection方法,它看起来如何以及cellForRowAtIndexPath(这里我尝试过NSInteger section = [indexPath section]; if (section == 0) { } if (section == 1) {} - 但如果我不会有现在正在发生的事件?)

2 个答案:

答案 0 :(得分:1)

根据具体情况,您可以在表格视图中包含1个或2个部分,然后在您的numberOfRowsInSection中检查现在是否有任何事件(如果不是,则删除该部分)。所以你的ifs就像是

BOOL eventsNow = YES/NO;
if (section == 0 && eventsNow) { } 
if (section == 0 && !eventsNow) { } 
if (section == 1 && eventsNow) { }
if (section == 1 && !eventsNow) { /* This case shouldn't happen so assert or throw ...*/ }

答案 1 :(得分:1)

这样的事情应该有效

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
    // Return the number of rows in the section.
    switch (section) {
        case 0:
            return [appDelegate.nowEvents count];
        case 1:
            return [appDelegate.todayEvents count];    
        default:
            return 0;
    }
}

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


    switch (indexPath.section) {
        case 0:
            EventClass *nowEvent = [appDelegate.nowEvents objectAtIndex:indexPath.row];
            //set up cell to display this event
            break;
        case 1:
            EventClass *todayEvent = [appDelegate.todayEvents objectAtIndex:indexPath.row];
            //set up cell to display this event
            break;    
        default:
            break;
    }

    // Configure the cell...

    return cell;
}

如果您现在没有发生事件,那么您的nowEvent数组将为空,因此numberOfRowsInSection将返回0,因此不会调用cellForRowAtIndexPath,因为没有任何内容可以显示。希望这会有所帮助。