4

私はこれについてすべて間違っているかもしれないので、誰かが私が何をすべきかを教えてくれることを願っています。

凡例とカラーピッカーとして機能するテーブルビューを作成しました。AccessoryViewスロットに、色付きのボックスであるカスタムビューを配置します。ユーザーは凡例を表示するので、どの色が何を意味するのかがわかり、色を選択して、その色をオブジェクトに割り当てることで図面を「色付け」できます。それはすべてうまく機能します。

私が問題を抱えているのは、選択された行スタイルです。凡例から行を選択すると、セルは本来のように青色になりますが、AccessoryViewが消えてしまいました。私はこれが起こらないようにしたい。しかし、消えないように何を設定すればいいのかわかりません。覚えておいてください、私はまだ行が「選択された」として表示されることを望みます。しかし、それを行うと、アクセサリビューが消えます(ほとんどの場合、選択した色によって非表示になります)。

これが私が今アクセサリービューを設定している方法です。

CGRect colorBox = CGRectMake(0, 0, 30, 30);
UIView *colorView = [[UIView alloc] initWithFrame:colorBox];
colorView.backgroundColor = [self colorWithHexString:[selOption valueForKey:@"qoColor"]];
cell.accessoryView = colorView;
4

1 に答える 1

7

セルが選択されても消えない UIView の代わりに UIImageView を使用できます。各色の小さな .png サムネイルを作成するか (たくさんない場合)、cellForRowAtIndexPath デリゲート メソッド ala で動的に作成することができます。

UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [[self colorWithHexString:[selOption valueForKey:@"qoColor"]]; CGColor]);
CGContextFillRect(context, rect);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[colorView setImage:image];

[cell setAccessoryView:colorView];
[colorView release];
于 2011-07-03T22:55:00.700 に答える