gpt4 book ai didi

ios - UIKit UITableViewCell 实现

转载 作者:行者123 更新时间:2023-12-01 21:46:08 24 4
gpt4 key购买 nike

作为我深入了解 UIKit 及其功能如何实现的研究的一部分,我读到在 iOS 的早期,UITableView 加载了表格 View 中的每个单元格,但在他们所做的是现在只加载可见的单元格.
那么如何实现 dequeueReusableCell(withIdentifier identifier:String) 呢?

class UITableView: UIScrollView {
func dequeueReusableCell(withIdentifier identifier: String) -> UITableViewCell? {
}
}

我认为有一个包含可见单元格的数组,并且这些方法只是根据标识符进行过滤。像这样的东西:
let cell = visibleCells.filter { $0.identifier == identifier }
return cell

但我想知道是否有更好的方法来理解它并做到这一点。

最佳答案

10 年前创建了一个项目“Chameleon”,其目标是在 macOS 上实现 UIKit。作者做了很多调试/逆向工程来理解和模仿大多数 UIKit 类型。代码可在 Github 上访问和 UITableView 实现是 here

- (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier
{
for (UITableViewCell *cell in _reusableCells) {
if ([cell.reuseIdentifier isEqualToString:identifier]) {
UITableViewCell *strongCell = cell;

// the above strongCell reference seems totally unnecessary, but without it ARC apparently
// ends up releasing the cell when it's removed on this line even though we're referencing it
// later in this method by way of the cell variable. I do not like this.
[_reusableCells removeObject:cell];

[strongCell prepareForReuse];
return strongCell;
}
}

return nil;
}

还有一个来自微软的 UIKit 逆向工程版本,但在 c++ https://github.com/Microsoft/WinObjC/tree/master/Frameworks/UIKit

关于ios - UIKit UITableViewCell 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206914/

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