gpt4 book ai didi

ios - UITableView 上的 UITableViewCell 消失 reloadRowsAtIndexPaths :

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:13 27 4
gpt4 key购买 nike

我有一些从 XIB 文件加载的 UITableViewCells。一切都很好,直到我在单元格消失时调用 [UITableView reloadRowsAtIndexPaths:withRowAnimation:] 方法。当我调用 [UITableView reloadData] 时,所有内容都会加载,当我在 View 上滚动单元格时,它也会重新出现。很奇怪。

我还注意到,当我调用 [UITableView reloadRowsAtIndexPaths:withRowAnimation:] 时,UITableView 不会尝试重用缓存的单元格,而是会尝试使用 cell = [tableViewCells objectAtIndex:cellId]; 获取一个新单元格;

这是我的代码:

- (void)viewDidLoad
{
...
// the objects from the XIB files are loaded onto an NSArray instance variable at viewDidLoad
tableViewCells = [[NSBundle mainBundle] loadNibNamed:@"ProfileTableViewCell" owner:nil options:nil];
...
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int cellId = /* some logic to get the correct cellID */
NSString *CellIdentifier = [NSString stringWithFormat:@"ProfileTableViewCell_%d", cellId];
ProfileTableViewCell *cell = (ProfileTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [tableViewCells objectAtIndex:cellId];
// additional work to setup subviews for the cell
[cell prepareSubviews];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
}

为了以防万一,这是我在 [ProfileTableViewCell prepareSubviews] 中所做的一些事情

- (void)prepareSubviews
{
...
[self.containerView.layer setCornerRadius:3];
[self.containerView.layer setBorderColor:UIColorFromRGB(0xCDCDCD).CGColor];
[self.containerView.layer setBorderWidth:2.0];
[self.containerView.layer setMasksToBounds:YES];
[self.containerView.layer setShouldRasterize:NO];
[self.containerView.layer setRasterizationScale:[UIScreen mainScreen].scale];
...
}

提前感谢可以帮助我的好人。

最佳答案

我不确定这是你的问题,但你获取细胞的方式不是正常方式。您应该在自己的 Nib 中制作每种类型的单元格(具有唯一标识符),然后使用 registerNib:forCellReuseIdentifier: 注册 Nib 。在 cellForRowAtIndexPath 中,只需根据索引路径出列所需的单元格,不要在 if (cell == nil) 子句中放置任何内容,因为这样做时不会调用它。

关于ios - UITableView 上的 UITableViewCell 消失 reloadRowsAtIndexPaths :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214008/

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