0

まず、ばかげた質問で申し訳ありませんが、私はコレクションビューが初めてで、混乱もほとんどありません。

に取り組んでいUICollectionViewます。ファイルから画像を渡していplistます。配列の項目が 6 ~ 8 個あり、すべての配列に 6 個の項目 (NSString) があります。私はこのコードを使用しています..

static NSString *identifier = @"Cell";
CollectionViewCell *cell = (CollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

NSArray *temp = [list objectAtIndex:indexPath.item];

UIImage *cellImage;
cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
cell.imageView.image = cellImage;

ここで、フラグ 1 または 0 を取得したときにインデックスを変更したいのですがobjectAtIndex:5、それは特定のアイテム用である必要があります。

UIImage *cellImage;

if (myInt == 1) {

    cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
}
else{
    cellImage = [UIImage imageNamed:[temp objectAtIndex:5]];
}

cell.imageView.image = cellImage;

私がこれを行っている場合、私は取得するindex 2index 5、すべてのアイテムを取得します。フラグに基づいて、いくつindex 2かのアイテムといくつかのアイテムを取得することは可能ですか?? index 5またはそうする他の方法はありますか?

任意の提案をいただければ幸いです。ありがとうございました。

編集:
コレクションビューには 3 つの画像 (アイテム) が連続しています。アイコンをタップすると、新しいビューにリダイレクトされ、いくつかのドキュメントが読み上げられます。バーのそのビューには、フラグ値 (0/1) を与える完了ボタンがあります。フラグ 1 を取得した場合は、その場合にのみ collectionview アイコンを変更します。しかし、ここでは、この指定されたコードによってすべてのアイコンindex 5が に置き換えられますが、 からの最初のアイコンと からindex 5の他の 2 つのアイコンのみが必要ですindex 2。最初のドキュメントがレビューされていることを区別するためです。

混乱したらごめんなさい。

4

1 に答える 1

1

この状況で myInt をそのように使用したくないと思います。代わりに、コレクション ビュー コントローラーに配列を作成して、選択された項目を追跡する必要があります。したがって、reviewDocs というプロパティ (NSMutableArray を指す) がある場合は、選択したセルの indexPath を追加します。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    [self.reviewedDocs addObject:indexPath];
}

次に、cellForItemAtIndexPath: メソッドで、現在の indexPath が reviewsDocs 配列のいずれかと一致するかどうかに基づいて画像を選択します。

UIImage *cellImage;

if ([self.reviewedDocs containsObject:indexPath]) {

    cellImage = [UIImage imageNamed:[temp objectAtIndex:5]];
}
else{
    cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
}

コレクション ビュー コントローラーに戻ってデータをリロードするまで、画像は変更されません。myInt フラグを何に使用しているのかわかりませんでしたが、たとえば、完了ボタンとキャンセル ボタンがある場合、これら 2 つのアクションに対してそれぞれ 1 または 0 を返す可能性があります。コレクション ビュー コントローラーの viewDidAppear メソッドで、myInt が 0 の場合、reviewDocs から最後のオブジェクトを削除できます。これは、ユーザーがドキュメントをレビューするのではなくキャンセルしたことを示します (その後、コレクション ビューで reloadData を呼び出します)。

于 2013-04-19T15:43:49.780 に答える