0

私は UICollectionView をあまり使用していないので、これは不可能かもしれませんが、質問しても問題ありません:)

各セルは異なる色として設定されます。

私がやりたいことは、セルをタップして、選択されたのと同じ色の UIImageView を含む別の UIViewController にプッシュすることです。

現在、2 番目の UIViewController のビューの色を変更できますが、その中の UIImageView の色は変更できません。

これが私のコードの一部です:

 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
 {
     [collectionView deselectItemAtIndexPath:indexPath animated:YES];

     ImageViewController * imageVC = [[ImageViewController alloc] initWithNibName:@"ImageViewController" bundle:nil];

     self.flatColor = [self colorForRow:indexPath.row];

     [self.navigationController pushViewController:imageVC animated:YES];

     imageVC.colorImageView.backgroundColor = _flatColor;
 }

 - (UIColor *)colorForRow:(NSInteger)row
 {
     UIColor *color;

     switch (row)
     {
         case 0:
             color = [UIColor redColor];
             break;
         case 2:
             color = [UIColor greenColor];
             break;
         case 4:
             color = [UIColor blueColor];
             break;
         default:
             color = [UIColor yellowColor];
             break;
     }

     return color;
 }

編集:

問題を修正しました。

コードの一部を再配置する必要がありました。最初に新しいviewControllerを完全にロードしてから、UIImageViewのbackgroundColorを変更する必要があります

4

1 に答える 1

0

次のコードを試してください。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
 {
     [collectionView deselectItemAtIndexPath:indexPath animated:YES];

     ImageViewController * imageVC = [[ImageViewController alloc]    initWithNibName:@"ImageViewController" bundle:nil];

     self.flatColor = [self colorForRow:indexPath.row];

     // This does not work

    [imageVC.colorImageView setBackgroundColor:_flatColor];

    //imageVC.colorImageView.backgroundColor = _flatColor;

     // This works
     //imageVC.view.backgroundColor = _flatColor;

     [self.navigationController pushViewController:imageVC animated:YES];
 }
于 2013-06-05T04:48:16.910 に答える