gpt4 book ai didi

iphone - 使用 IB 创建的自定义单元格在调用 reloadSections 后隐藏 :withRowAnimation:

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:19:37 25 4
gpt4 key购买 nike

所以我关注了this guide (“静态行内容的技术”)创建我自己的包含一个图像的自定义 UITableViewCell-s。

以下代码摘 self 的tableView:cellForRowAtIndexPath: 方法:

UIImageView *imageView = (UIImageView *)[imageViewCell viewWithTag:1];
imageView.image = [UIImage imageNamed:imageName];
cell = imageViewCell;
NSLog(@"%@", cell);
...
return cell;

imageViewCell 指的是我在界面生成器中创建的自定义单元格。如您所见,我每次都在尝试更改图像。

一切正常,但如果我在 UITableView 上使用 reloadSections:withRowAnimation:,这个单元格就会消失。

这是控制台输出:

<UITableViewCell: 0x9c68fe0; frame = (0 0; 302 215); autoresize = RM+BM; layer = <CALayer: 0x4b88110>>
<UITableViewCell: 0x9c68fe0; frame = (0 120; 320 102); autoresize = W; layer = <CALayer: 0x4b88110>>
<UITableViewCell: 0x9c68fe0; frame = (-320 120; 320 102); alpha = 0; autoresize = W; layer = <CALayer: 0x4b88110>>
<UITableViewCell: 0x9c68fe0; frame = (-320 121; 320 105); alpha = 0; autoresize = W; layer = <CALayer: 0x4b88110>>
<UITableViewCell: 0x9c68fe0; frame = (-320 120; 320 111); alpha = 0; autoresize = W; layer = <CALayer: 0x4b88110>>

如您所见,它的帧和 alpha 更改为奇怪的值并保持原样。

这是有道理的,因为我不是每次都重新初始化它,它只是在从 nib 唤醒后才初始化一次。

如何重置其属性以使其再次可见?我找到了名为 prepareForReuse 的方法,但它不起作用。我需要一些可以重置 alpha 和帧以使其再次出现的东西。


每次加载nib的解决方案

为了更清楚地说明我的第一种方法:我在 View Controller 的 Nib 中创建了 TableView 单元格。我设置了一个 socket ,所以我可以在 tableView:cellForRowAtIndexPath: 中使用它。

由于单元格的属性在动画之后被弄乱了,我认为重新创建该单元格肯定会有所帮助。问题是我的 nib 只加载了一次,我(仍然)不知道如何对由 nib 文件初始化的 View 进行重新初始化之类的操作。

所以我决定创建一个新的 nib 文件并每次都加载它。这不完全是我想要的,但它确实有效。代码如下所示,非常简单:

[[NSBundle mainBundle] loadNibNamed:@"TestTableCell" owner:self options:nil];
UIImageView *imageView = (UIImageView *)[imageViewCell viewWithTag:1];
imageView.image = [UIImage imageNamed:imageName];
cell = imageViewCell;
imageViewCell = nil; // imageViewCell is still an outlet and setting
// it to nil makes the nib load it again the next
// time - so I'm sure I'll get a new instance.
cell.selectionStyle = UITableViewCellSelectionStyleNone;

最佳答案

reloadSections:withRowAnimation:UITableViewRowAnimationNone 一起使用实际上解决了我的问题,它仍然显示从部分添加/删除单元格的动画。

我仍然相信,这是 UIKit 中的一个错误。

关于iphone - 使用 IB 创建的自定义单元格在调用 reloadSections 后隐藏 :withRowAnimation:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293940/

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