У меня есть UITableViewCell, он отключен с прокруткой и с фиксированными разделами и строками.Динамически отображать изображение в UITableViewCell
Есть две секции, с 1 строкой в разделе 0, и несколько строк в разделе 1.
The Tableview для пользователей, чтобы сделать какой-то выбор.
Таким образом, первый раздел (только один ряд) будет отображать результат выбора пользователей,
и нет сомнений, второй раздел (с несколькими строками) для выбора.
Теперь я хочу, чтобы поместить изображение в ячейке только строки первого раздела,
и это изображение будет меняться в зависимости от пользователей выбрать.
Очень легко оценить, какое изображение png должно отображаться, но у меня есть проблема с его обновлением.
Я попытался использовать изображение ячейки и вручную разместить UIImageView или UIView для отображения этих изображений.
Но все они не будут работать, я имею в виду, что они просто сохраняют то, что они отображают в начале, и никогда не меняют его, даже если я установил фон представления или его изображение на новый png.
Я попробовал некоторый метод, как
[myImage setNeedsDisplay] для ручного alloced зрения,
или
[thatCell setNeedsDiaplsy] & [self.tableView reloadData] для ImageView этой клетки,
но зря.
Так интересно, как я могу достичь этой функции, которая динамически отображает изображение в UITableViewCell в разных ситуациях?
Большое спасибо!
__ _ __обновление линии_ ____
Мне жаль, что я не предоставил свой код.
и вот они.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *inOutTableCellIdentifier = @"DealTableViewIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:inOutTableCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:inOutTableCellIdentifier] autorelease];
cell.textLabel.font = [UIFont fontWithName:cMyFont size:[UIFont systemFontSize]];
cell.detailTextLabel.font = [UIFont fontWithName:cMyFont size:[UIFont smallSystemFontSize]];
// I tried using both imageView and UIView here, but won't work
if (indexPath.section == 0) {
//cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"moneyCell.png"]];
cell.backgroundColor = [UIColor cyanColor];
// cell.imageView.image = [UIImage imageNamed:@"dealDone2.png"];
self.undoneIcon = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease];
//self.undoneIcon.image = [UIImage imageNamed:@"dealUndone2.png"];
self.undoneIcon.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"dealUndone2.png"]];
[cell.contentView addSubview:self.undoneIcon];
.... // deal with other rows in section 1
return cell;
}
// and this is the method that update the image, the images are named "dealDoneX.png",
// where X is an integer from 0 to 4.
- (void)checkUndoneDegree { // here I also tried 2 ways corresponding to UIView or a cell's imageView, but neither works well.
int i = 0;
if (self._date)
i++;
if (self.moneyTextField.text)
i++;
if (self._incomingAccount)
i++;
if (self._expensingAccount)
i++;
if (_dealType != kTransferView)
if (self._type)
i++;
NSLog(@"undone degree: %d",i);
NSString *imageName = [@"dealUndone" stringByAppendingFormat:@"%d",i];
self.undoneIcon.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:imageName]];
[self.undoneIcon setNeedsDisplay];
// NSUInteger p[2] = {0,0};
// UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndexes:p length:2]];
// [cell setNeedsDisplay];
}
и каждый раз, когда я обновить данные таблицы, как меняется текст некоторой ячейки,
Я бы назвал [себя checkUndoneDegree], а затем вызвать [self.tableView reloadData],
Но изображение никогда не обновляется, по крайней мере, с экрана.
Я даже пытался поставить коды, решить, какой формат PNG, чтобы установить в
- (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath {
, но он может только сделать представление, отображающее первый png, без какого-либо обновления.
Спасибо за помощь!
Мне кажется, что если вы тестируете раздел/строку в таблицеView: cellForRowAtIndexPath :, он должен работать. Может быть, вам не хватает чего-то простого? Попробуйте отладить этот метод и посмотрите, будет ли он вызван как ожидалось. Все остальное звучит правильно - я делаю то же самое, кроме как в динамической таблице, и все работает отлично. –
Как насчет того, чтобы вы показали нам какой-то код? – lawicko
Покажите нам, как вы создаете ячейку с изображением. – jrtc27