У меня есть UITableViewCell, он отключен от прокрутки и имеет фиксированные секции и строки.
Есть две секции, с 1 строкой в секции 0 и несколькими строками в секции 1.
TableView для пользователей, чтобы сделать выбор.
Итак, в первом разделе (только с одной строкой) будет отображаться результат выбора пользователя,
и, без сомнения, второй раздел (с несколькими строками) предназначен для выбора.
Теперь я хочу поместить изображение в ячейку единственной строки первого раздела,
и это изображение будет меняться в зависимости от выбора пользователя.
Очень легко судить, какое изображение PNG должно отображаться, но у меня проблемы с его обновлением.
Я попытался использовать imageView ячейки и вручную выделить UIImageView или UIView для отображения этих изображений.
Но все они не будут работать, я имею в виду, что они просто сохраняют то, что отображают в начале, и никогда не меняют его, даже если я установил фон представления или его изображение на новый png.
Я попробовал какой-то метод, например
[myImage setNeedsDisplay] для просмотра, выделенного вручную,
или
[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];
}
и каждый раз, когда я обновляю данные таблицы, например, изменяя текст какой-то ячейки,
Я бы вызвал [self checkUndoneDegree], а затем вызвал [self.tableView reloadData],
Но изображение никогда не обновляется, по крайней мере, с экрана.
Я даже пытался поставить коды, которые решают, какой png установить в
- (UITableViewCell *) tableView: (UITableView *) tableView
cellForRowAtIndexPath: (NSIndexPath *) indexPath {
, но он может только отображать первый png без каких-либо обновлений.
Спасибо за помощь!