gpt4 book ai didi

ios - UITableView 子类初始化设置不起作用

转载 作者:行者123 更新时间:2023-11-29 01:37:02 25 4
gpt4 key购买 nike

我正在使用 Swift 创建一个 UITableView 子类,但我的值不固定。

我是这样创建的:

override init(frame: CGRect, style:UITableViewStyle) {
super.init(frame: frame, style: style)
setupTableView()
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func setupTableView() {
self.delegate = self
self.dataSource = self
self.bounces = false
self.separatorStyle = .None
self.backgroundColor = Color.lightBackground
self.addSubview(footerImageView)
let cellNib = UINib(nibName: "MenuTableViewCell", bundle: nil)
self.registerNib(cellNib, forCellReuseIdentifier: "MenuTableViewCell")
}

当 View 出现时,分隔符仍然存在,背景仍然是白色(Color.lightBackground 是浅灰色)。我可以看到 tableView 背景,因为单元格没有填满屏幕。我的单元格确实加载了正确的背景颜色。

单元会加载,所以我知道我的委托(delegate)和数据源正在工作。

为什么我的属性没有设置?

最佳答案

我也遇到过同样的问题,这个技巧很有帮助:

override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: style)
setup()
}

func setup() {
DispatchQueue.main.async {
self.delegate = self
self.dataSource = self
self.backgroundColor = .clear
self.register(SearchResultCell.self, forCellReuseIdentifier: "SearchResultCell")
self.separatorStyle = .none
self.tableFooterView = UIView()
}
}

老实说,我不知道为什么会这样。但 main.async 解决了这个问题。

好的,我明白了。该问题是由于在包含 View Controller 的初始值设定项中初始化 UITableView 的子类实例而引起的。使 TableView lazy var也可以解决该问题。

关于ios - UITableView 子类初始化设置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32851640/

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