0

私は動的なテーブルビューを持っています。これは実際には静的に似ていますが、View Controllerに埋め込まれているため、動的に設定しました。テーブルビューのデリゲートメソッドに3つのセルの4つのセクションが設定されているという問題がありますが、セルデータを入力する準備ができている辞書を含む配列があります。

このコードでわかるように、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を正しく反復し、セクションと行を設定する方法がわかりません。配列には、すべてのセクション(3つのセルの8つのセクション)に対応する8つの辞書が含まれています。

助けてくれて本当にありがとうございます。

4

1 に答える 1

2

配列をループするために、私の好みの方法はforin:です。

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

ただしcellForRowAtIndexPath、テーブルビューでは、データソースはすでにループ内にあることに注意してください(ビューのどこかに埋め込まれているループ)。indexPathこのパラメーターを使用して、現在地を判別できます。sectionrowプロパティが含まれています。

于 2012-05-18T17:09:44.370 に答える