如何使用节设置表视图的单元格

时间:2012-05-18 16:55:32

标签: objective-c ios5

我有一个动态表视图,实际上就像静态,但我已将其设置为动态,因为它嵌入在视图控制器中。我有一个问题,表视图有4个单元格的3个单元格设置在表视图委托方法,但我有一个数组,字典准备填充单元格数据。

正如您在此代码中所看到的,它总是在所有部分中设置相同的数据,因为indexPath.row用于迭代数组,尽管数组有更多值,但它不会达到3。

以下是当前代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

 NSDictionary *jornada = [[NSDictionary alloc] initWithDictionary: [copaReyArray objectAtIndex:indexPath.row]];

        self.copaReytable.backgroundColor = [UIColor whiteColor];


        if (indexPath.row==0){

            cuartosReyCell *headerCell = [tableView dequeueReusableCellWithIdentifier:@"header"];

            if (headerCell == nil) {
                headerCell = [[ cuartosReyCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"header"];

            }

            headerCell.cuartos.text = @"1/4 final";

            headerCell.backgroundColor = [UIColor colorWithRed:0.008 green:0.235 blue:0.451 alpha:1];

            return headerCell;
        }

        if (indexPath.row==1){

            localCopaReyCell *localCell = [tableView dequeueReusableCellWithIdentifier:@"local"];

            if (localCell == nil) {
                localCell = [[ localCopaReyCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"local"];

            }


            NSString *equipoLoc = [jornada valueForKey:@"id_local"];

            UIImage *img = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png",[self applicationDocumentsDirectory],equipoLoc ]];

            [localCell.escudo setImage:img];

            localCell.escudo.contentMode = UIViewContentModeScaleAspectFit;

            localCell.equiLoc.text = [equiposDic valueForKey:equipoLoc]; 

            localCell.equiLoc.textColor = [UIColor colorWithRed:0.004 green:0.29 blue:0.553 alpha:1];

            localCell.primerPartido.text = [jornada valueForKey:@"res_local"]; 

            localCell.primerPartido.textColor= [UIColor colorWithRed:0.722 green:0.145 blue:0.345 alpha:1];

            return localCell;
        }

        if (indexPath.row==2){

            visitanteCopaReyCell *visitanteCell = [tableView dequeueReusableCellWithIdentifier:@"visitante"];

            if (visitanteCell == nil) {
                visitanteCell = [[ visitanteCopaReyCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"visitante"];

            }

            NSString *equipoLoc = [jornada valueForKey:@"id_local"];

            UIImage *img = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png",[self applicationDocumentsDirectory],equipoLoc ]];

            [visitanteCell.escudo setImage:img];

            visitanteCell.escudo.contentMode = UIViewContentModeScaleAspectFit;

            visitanteCell.equiLoc.text = [equiposDic valueForKey:equipoLoc]; 

            visitanteCell.equiLoc.textColor = [UIColor colorWithRed:0.004 green:0.29 blue:0.553 alpha:1];

            visitanteCell.primerPartido.text = [jornada valueForKey:@"res_local"]; 

            visitanteCell.primerPartido.textColor= [UIColor colorWithRed:0.004 green:0.29 blue:0.553 alpha:1];

            return visitanteCell;

        }

我不知道如何在copaReyArray上正确迭代并设置节和行。该数组包含8个对应于每个部分的字典(3个单元格的8个部分)。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

要遍历数组,我首选的方法是forin

for(Object *obj in array) {
    // do stuff with obj
}

请记住,虽然表视图中的cellForRowAtIndexPath数据源已经在循环中(一个被隐藏在视图之外的地方)。您可以使用indexPath参数来确定您的位置。它包含sectionrow属性。