У меня есть эта действительно странная проблема.Пользовательский UITableViewCell с UIImageView не загружает изображение для определенных ячеек
В основном у меня есть подкласс UITableViewCell, который написан и связан некоторыми выходами с Nib.
подкласс Cell.h
@property (weak, nonatomic) IBOutlet UIImageView *myImageView;
подкласс Cell.m
@synthesize myImageView = _myImageView; // do i need this?
- (void) setUpCell... image:(UIImage*)image
{
if(image)
self.myImageView.image = image;
else
self.myImageView.image = nil;
}
В контроллере представления, который управляет вид таблицы для ячейки,
Я зарегистрировался с Nib, используя следующий код:
[self.tableView registerNib:[UINib nibWithNibName:pathToNibForBaseMenuCell bundle:nil] forCellReuseIdentifier:identifierForBaseMenuCell];
В cellForRowAtIndexPath, я из очереди в камеру и установить изображение ...
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:identifierForBaseMenuCell];
switch (indexPath.section) {
case 2:
[cell setUpCell...image:self.cogWheelImageForSettingsIcon];
break;
default:
break;
}
return cell;
}
Странно, что у меня есть 10 ячеек в секции 2 (как описано выше), и я установил они идентичны, некоторые ячейки показывают значок зубчатого колеса, а некоторые нет! Прокрутка этих ячеек внутри и вне поля зрения, похоже, изменяет, какие ячейки показывают значок, а какие нет.
Это означает, что регистрация ячейки, включая настройку идентификатора повторного использования, установление подкласса в файле nib, все эти виды прекрасны (общие ошибки).
Эта модель поведения, мне кажется, что память, отведенная - как будто что-то быть высвобождены где-то ...
Вот картинка, чтобы проиллюстрировать, что я имею в виду:
Пожалуйста Помогите!
Благодаря
Vb
Edit:
OK только, чтобы быть ясно, им не с помощью каких-либо данных, но с этой таблицей, но, несмотря на то, что нет никаких причин, почему я эти шестеренки не должен» не появляться!
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
switch (section) {
case 0:
return 1;
break;
case 1:
return 10;
break;
case 2:
return 10;
break;
default:
return 0;
break;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:identifierForBaseMenuCell];
switch (indexPath.section) {
case 0:
[cell setUpCell... text:@"Username" image:nil];
break;
case 1:
[cell setUpCell... text:@"Magazine" image:nil];
break;
case 2:
{
NSString* str = [NSString stringWithFormat:@"Settings: %d",indexPath.row];
[cell setUpCell... text:str image:self.cogWheelImageForSettingsIcon];
break;
}
default:
break;
}
return cell;
}
Выход, который ...
Я считаю, что если установка им то же изображение для всех ячеек, которые находятся в 2-ом разделе «Настройки», то почему только некоторые из них показывают изображение?
Пользовательский сотовый класс:
@interface CustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *backgroundImageView;
@property (weak, nonatomic) IBOutlet UILabel *mainLabel;
@property (weak, nonatomic) IBOutlet UILabel *arrowView;
@property (weak, nonatomic) IBOutlet UIImageView *myImageView;
- (void) setUpCelltext:(NSString*)text image:(UIImage*)image;
@implementation CustomCell
- (void) setUpCelltext:(NSString*)text image:(UIImage*)image
{
self.backgroundImageView.image = [UIImage imageNamed:pathForBackgroundImage];
self.myImageView.layer.cornerRadius = kCornerRadiusOfImageView;
self.myImageView.layer.masksToBounds = YES;
if(image)
self.myImageView.image = image;
else
self.myImageView.image = nil;
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:self.fontForText forKey:NSFontAttributeName];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:text attributes:attrsDictionary];
self.mainLabel.attributedText = attrString;
}
@end
Клетки имеют собственные шрифты, вид с стрелка, фон вид - все они работают, как они должны! Они меняются в зависимости от раздела. Его просто изображение, которое не работает.Вы можете видеть, что эта функция, вызываемая cellForRowAtIndexPath, либо установит образ, если он предоставлен, либо установит обратное изображение в нуль, если это не так.
Просто комментарий по вопросу, скрытый в коде, вам больше не нужно * @ synhesize * начиная с последних версий Objective-C. Это будет сделано автоматически с помощью соглашения «_» – rdurand
спасибо, я удалил его! – Vazzyb
Похоже, вы каждый раз передаете 'self.cogWheelImageForSettingsIcon' в свой источник данных' UITableView', поэтому я не вижу, как вы можете не иметь каждую ячейку с изображением значка. – RileyE