我有自定义UITableViewCells
(在界面构建器中创建),用于静态UITableView
,为了参数我将调用 AddUserTableViewController (即我做不使用自动释放的单元格,因为我只有5行)。
在顶部单元格(用于用户名)中,我嵌入了UIButton
我用来打开UIActionSheet
,而UIImagePicker
又允许[button.imageView.image = imageFromImagePicker]
在UIButton上设置图像(即[self.tableView reloadData]
)。该按钮具有默认图像(在IB中添加),其中显示“添加图像”。
按钮上的图像设置没有问题,即使我导航到任何表格单元格的详细信息页面,但包含该按钮的用户名单元格除外,它仍然保留在原位。当我选择此单元格时,一旦从“添加名称”详细信息视图导航回 AddUserTableViewController ,图像就会消失并且不再出现。显示上面提到的“添加图像”默认图像。
我尝试了很多策略:
1)在[button.imageView setNeedsDisplay]
方法中使用[self.view setNeedsDisplay]
,viewWillAppear
,cellForRowAtIndexPath
;
2)在willDisplayCell:forRowAtIndexPath:
方法中使用上述方法;
3)在覆盖button.imageView.image
方法中使用上述方法;
当我在程序中放置调试NSLog语句时,我可以看到UIImagePicker
属性仍然设置为使用UITableViewCell
选择的图像,但它没有显示(来自笔尖的默认图像是显示)。
正如我上面提到的,只有通过选择嵌入了UIButton
的{{1}}离开 AddUserTableViewController ,才会发生这种情况。
我目前不知道该做什么,并且非常感谢任何人都可以提供的帮助。我只需要找到一种方法来在上述情况下更新嵌入式UIButton上的图像。
我添加了cellForRowAtIndexPath:
方法中的一部分代码仅用于说明目的 -
//populates the personal info section
if (section == kPersonalInfoAddSection) {
//Covers the add image button and the name adding field
if (row == kNameRow) {
UILabel *nameLabel = (UILabel *)[nameCell viewWithTag:kMainTextTag];
UILabel *reqLabel = (UILabel *) [nameCell viewWithTag:kSubTextTag];
//UIButton *imageButton = (UIButton *) [nameCell viewWithTag:kImageTag];
if (mainUser.imagePath != nil) {
UIImage *img = [UIImage imageWithContentsOfFile:mainUserImagePath];
imageButton.imageView.image = img;
[imageButton.imageView setNeedsDisplay];
//[imageButton setNeedsDisplay];
//[nameCell setNeedsDisplay];
NSLog(@"************************** Added the BESPOKE image (%@)to the image button", img);
}
else {
NSLog(@"************************** Added the DEFAULT image (%@)to the image button", addUserImage);
imageButton.imageView.image = addUserImage;
}
UIColor *blackText = [[UIColor alloc] initWithWhite:0 alpha:1];
NSString *firstName;
if (mainUser.firstName){
nameLabel.textColor = blackText;
firstName = mainUser.firstName;
}
else {
nameLabel.textColor = reqLabel.textColor;
firstName = NAME_STRING;
}
NSString *lastName = (mainUser.lastName)? mainUser.lastName : EMPTY_STRING;
NSString *name = [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName];
nameLabel.text = name;
reqLabel.text = REQUIRED_STRING;
[blackText release];
return nameCell;
}
答案 0 :(得分:0)
在cellForRowAtIndexPath
中您是否正在做一些会“取消”图片的内容?