我试图只更新一个以编程方式创建的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?
答案 0 :(得分:1)
UIImageView * myLabel = [myCell viewWithTag: 400];
编译器不满意,因为正如你所说,viewWithTag:
返回的是UIView,而不是UIImageView。您需要强制转换,以确保编译器将成为UIImageView:
UIImageView * myLabel = (UIImageView*)[myCell viewWithTag: 400];
但要注意 - 不要欺骗编译器,否则当应用程序运行时你会崩溃!确保这个视图确实 是一个UIImageView!