如何只更新UITableViewCell的一个元素?

时间:2015-04-27 15:49:45

标签: ios objective-c uitableview uiimageview

我试图只更新一个以编程方式创建的UITableViewCell的一个元素,而不更新整个表或整个单元格。

以下是我的代码的一部分:

以下是我将UIImageView添加到表中的方法:

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
suggestedCellAvatarImageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.bounds.size.width * 0.025, 100 * 0.25, 100 * 0.5, 100 * 0.5)];
                    suggestedCellAvatarImageView.layer.backgroundColor = [[UIColor grayColor] CGColor];
                    suggestedCellAvatarImageView.layer.cornerRadius = 25;
                    suggestedCellAvatarImageView.layer.borderWidth = 1.0;
                    suggestedCellAvatarImageView.layer.masksToBounds = YES;
                    suggestedCellAvatarImageView.layer.borderColor = [[UIColor darkGrayColor] CGColor];
                    suggestedCellAvatarImageView.contentMode = UIViewContentModeScaleAspectFill;
                    suggestedCellAvatarImageView.tag = 400;
                    [cell.contentView addSubview:suggestedCellAvatarImageView];

以下是我尝试更新ImageView的方法:

UITableViewCell * myCell = [suggestionsTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:[currentAvatarCellIndex intValue] inSection:0]];
                UIImageView * myLabel = [myCell viewWithTag: 400];
                [myLabel setImage:returnedAvatarTumbnail];

问题是我试图返回一个视图而不是UIImageView ..

关于如何返回任何类型的UI元素的任何想法,而不仅仅是UIView?

1 个答案:

答案 0 :(得分:1)

UIImageView * myLabel = [myCell viewWithTag: 400];

编译器不满意,因为正如你所说,viewWithTag:返回的是UIView,而不是UIImageView。您需要强制转换,以确保编译器成为UIImageView:

UIImageView * myLabel = (UIImageView*)[myCell viewWithTag: 400];

但要注意 - 不要欺骗编译器,否则当应用程序运行时你会崩溃!确保这个视图确实 是一个UIImageView!