Отображение UIImageView в подклассе UITableViewCell в cellForRowAtIndexPath - PullRequest
1 голос
/ 02 февраля 2012

У меня есть свойство DotImageView в моем подклассе UITableViewCell.

@property (nonatomic, retain) IBOutlet UIImageView *DotImageView;

Я пытаюсь отобразить это следующим образом в методе cellForRowAtIndexPath:

static NSString *TargetCellIdentifier = @"TargetDetailTableViewCellIdentifier";
    TargetDetailTableViewCell *cell = (TargetDetailTableViewCell *)[tableView dequeueReusableCellWithIdentifier:TargetCellIdentifier];
if (cell == nil) {
    UINib *nib = [UINib nibWithNibName:@"TargetDetailTableViewCell" bundle:nil];
    [nib instantiateWithOwner:self options:nil];
    cell = self.TargetCell;
    self.TargetCell = nil;
}
NSUInteger row = [indexPath row];
NSInteger section = [indexPath section];

Target *aTarget = [targetDictionary objectForKey:[NSNumber numberWithInteger:section]];

if (row == 0) {
        UIImage *dot;
        if (aTarget.importance == high) {
            dot = [UIImage imageNamed:@"dot_red.png"];
        }
        else {
            dot = [UIImage imageNamed:@"dot_gray.png"];
        }
        UIImageView *variantImageView = [[UIImageView alloc] initWithImage:dot];
        cell.DotImageView = variantImageView;
        [variantImageView release];
        return cell;

Я не вижу изображения в своей камере. Другие метки моего подкласса UITableViewCell действительно отображаются. Я что-то упустил с UIImageView? Я не очень знаком с этим. Спасибо.

Ответы [ 4 ]

0 голосов
/ 05 июня 2013

Вставьте в класс TargetDetailTableViewCell метод:

- (void)setDotImage:(UIImage*)dot{



[self.DotImageView setImage:dot];


}

Это работает для меня.Я надеюсь, что это может помочь вам!

0 голосов
/ 02 февраля 2012

У меня это работает с

[cell.DotImageView setImage:dot];

Я не уверен, почему это работает по сравнению с другим методом, который у меня был изначально.

0 голосов
/ 03 февраля 2012

1 - базовый вариант

Просто используйте свойство изображения стандартного UITableViewCell. Подходит для большинства случаев.

2 - Ваш заказ

Будьте осторожны, ваша собственность - это простая ссылка на ваш imageView. Таким образом, изменение его значения не заменяет первоначальное в дереве подпредставлений. Вместо этого лучше сохранить ваш imageView и просто установить его свойство UIImage.

yourImageView.image = aNewImage.
0 голосов
/ 02 февраля 2012

измените свой код на

if (row == 0) {
        UIImage *dot;
        if (aTarget.importance == high) {
            dot = [UIImage imageNamed:@"dot_red.png"];
        }
        else {
            dot = [UIImage imageNamed:@"dot_gray.png"];
        }
        cell.DotImageView.image = dot;
        return cell;

что вы делали, так это то, что вы назначаете новый объект UIImageView для cell.DotImageView, теперь ваша ячейка. DotImageView указывает на этот локальный объект просмотра изображений, а не на тот объект, который находится на xib

...