我有一个UITableViewCell,它是滚动禁用的,有固定的部分和行。
有两个部分,第0部分有1行,第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的代码放在
中方法,但它只能使视图显示第一个png,而不进行任何更新。
感谢您的帮助!
答案 0 :(得分:1)