gpt4 book ai didi

ios - 在 UITableViewCells 中嵌套 xibs

转载 作者:行者123 更新时间:2023-11-29 01:53:43 26 4
gpt4 key购买 nike

我有一个观点,它在其他观点中重复出现。因此,为了避免重复代码和 xib,我想将子 xib 嵌套在其他 xib(父)中。

为此,我的父 xib 有一个 View ,然后我将以编程方式实例化子 xib。

我用这个帖子http://www.secretlab.com.au/blog/2012/06/17/embedding-external-nibs-for-fun-and-profit指导我。

但我的问题是如果我在 UITableViewCells 中这样做。我希望可重复使用的电池是高效的。我必须始终实例化 subview 。我怎样才能避免这种情况?

我的代码:

 cellForRowAtIndexPath:

DetailPostCell *cell = (DetailPostCell *) [tableView dequeueReusableCellWithIdentifier:REUSE_IDENTIFIER_DETAIL_POST_CELL];

if (cell == nil) {

UINib* customCellNib = [UINib nibWithNibName:REUSE_IDENTIFIER_DETAIL_POST_CELL bundle:nil];
[tableView registerNib: customCellNib forCellReuseIdentifier:REUSE_IDENTIFIER_DETAIL_POST_CELL ];

cell = (DetailPostCell *)[tableView dequeueReusableCellWithIdentifier:REUSE_IDENTIFIER_DETAIL_POST_CELL];
}

/*Inflate subiview*/
SubViewCell *subCell = [SubViewCell loadFromNib];
[cell.view addSubview:subCell];


[cell fillCellWithPost:post];

return cell;



+ (SubViewCell *)loadFromNib {
UINib* nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
NSArray* objects = [nib instantiateWithOwner:self options:nil];

return [objects objectAtIndex:0];
}

最佳答案

在您的 DetailPostCell 类中,您应该在此处添加 SubViewCell View ,而不是在 cellForRowAtIndexPath:

这样您就不会每次都添加 subview ,无论单元重用如何。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Code to dequeue DetailPostCell

[cell updateSubviewPost:post];
}

updateSubviewPost 然后将使用对添加的 subview 的引用来根据需要进行填充。

关于ios - 在 UITableViewCells 中嵌套 xibs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111232/

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