gpt4 book ai didi

ios - 从 Delegate 方法刷新 UITableView Cell UI 按钮图像的问题

转载 作者:行者123 更新时间:2023-11-29 13:21:39 26 4
gpt4 key购买 nike

我在为 UITableViewCell 中的 UIButtons 正确设置图像时遇到问题。我在 Storyboard 中使用带有四个按钮的自定义 Cell 来创建画廊效果,并使用 ImageLoader Delegate 从服务器加载图像,就像在 Apple 的 LazyTableImages 示例代码中一样。我正在从 ImageLoader 取回图像,问题是设置图像。

如果我在 UITableView cellForRowAtIndexPath 中设置图像,如果图像已经加载或只是默认图像,我可以设置它们:

for (int i = 0; i < [posts count] && i < [galleryButtons count]; i++)
{
post = [posts objectAtIndex:i];
UIButton *button = [galleryButtons objectAtIndex:i];

[button setTag:post.userID];

if (!post.userIcon)
{

if (tableView.dragging == NO && tableView.decelerating == NO)
{
loadFlag = YES;
}
[button setImage:[UIImage imageNamed:@"BtDefault.png"] forState:UIControlStateNormal];
} else
{
[button setImage:post.userIcon forState:UIControlStateNormal];
}
}

if (loadFlag)
{
[self startIconDownload:posts forIndexPath: indexPath];
}

但是,当委托(delegate)稍后调用 ImageDidLoad 方法时,图像并没有改变。

- (void)postImageDidLoad:(NSIndexPath *)indexPath forColumn:(int)postColumn
{
ImageLoader *imageLoader = [imageDownloadsInProgress objectForKey:indexPath];
Post *post;

if (imageLoader != nil)
{
UITableViewCell *cell = [timeLineTable cellForRowAtIndexPath:indexPath];


if (timeLineStyle == 1) //Gallary Style
{

int index = (indexPath.row * 4) + postColumn;
int buttonTag = 200 + postColumn + 1;
NSLog(@"Button tag is %i", buttonTag);
post = [currentPosts objectAtIndex:index];
UIButton *galleryButton = (UIButton *)[cell viewWithTag:buttonTag];
[galleryButton setImage:post.userIcon forState:UIControlStateNormal];

UIImageView *imageTester = (UIImageView *)[cell viewWithTag:300];
[imageTester setImage:post.userIcon];

[timeLineTable reloadData];

[cell setHighlighted:YES];

} else // Post Style
{
UIImageView *userImageView = (UIImageView*)[cell viewWithTag:101];
UILabel *userNameLabel = (UILabel *)[cell viewWithTag:102];
[userNameLabel setText:@"Image Loaded"];
post = [currentPosts objectAtIndex:[indexPath row]];
[userImageView setImage:post.userIcon];
}

}
}

你可以看到我在单元格中有一个 UIImage 用于测试。这工作得很好。如果我删除上面 cellForRowAtIndexPath 中的 for 循环,此代码也可以正常工作。问题是没有 for 循环,如果图像已经加载,则不会设置按钮图像。

我不确定这是否是指针过多导致 UIButton 无法更改的问题。这就是我能想到的,但我对 StoryBoard 和这种自定义单元格操作风格还很陌生。感谢您的帮助。

最佳答案

在顶部,您将按钮标签设置为 [button setTag:post.userID]; 但在底部,您使用以下标签检索按钮:int buttonTag = 200 + postColumn + 1 ;

关于ios - 从 Delegate 方法刷新 UITableView Cell UI 按钮图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com