UITableViewCell: вспомогательный вид исчезает при выборе - PullRequest
4 голосов
/ 24 июня 2011

Возможно, я все делаю неправильно, так что, надеюсь, кто-то скажет мне, что я должен делать.

Я построил табличное представление, чтобы действовать как сборщик легенд и цветов. В слоте 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;

1 Ответ

7 голосов
/ 04 июля 2011

Вы можете использовать UIImageView вместо UIView, который не исчезнет при выборе ячейки.Вы можете создать крошечные миниатюры .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];
...