gpt4 book ai didi

ios - 如何在通过 UITableViewCell 中的 XIB 加载的 subview 中对标签和 UILabels/UIImageViews 进行初始样式设置

转载 作者:行者123 更新时间:2023-11-30 12:26:19 24 4
gpt4 key购买 nike

我有一个 UITableViewCell,它有一个 subview (在其内容 View 内),其中包含标签、 ImageView 和我需要设置的其他属性。

此 subview 是从 XIB 设置的,因为它在应用程序的其他地方使用。我将其加载到单元格中

private func setup() {
let nib = UINib.init(nibName: "AuthorHeaderView", bundle: nil)
if let view = nib.instantiate(withOwner: self, options: nil).first as? UIView {

view.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(view)

view.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
view.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
view.topAnchor.constraint(equalTo: topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
}
}

然后,当加载单元格时,我在 awakeFromNib() 中设置一些默认值。当我在那里有一个断点时,我可以看到 headerView: AuthorHeaderView 已加载到内存中并已正确设置,但它的 labels 和 imageView 还没有加载,它们为零,因此它尝试设置这些 View 的样式时崩溃。

如何对标签和 ImageView 以及通过 XIB 加载的 subview 中的所有内容进行初始样式设置?

最佳答案

好的,所以我找到了解决方案。问题是我没有添加 init(coder aDecoder: NSCoder)

我有一个从 awakeFromNib 调用的设置方法,但我还需要从 initWithCoder 调用它。

示例:

override func awakeFromNib() {
super.awakeFromNib()

setup()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

setup()
}

private func setup() {
let nib = UINib.init(nibName: "HeaderView", bundle: nil)
if let view = nib.instantiate(withOwner: self, options: nil).first as? UIView {

view.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(view)

view.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
view.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
view.topAnchor.constraint(equalTo: topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
}
}

无论如何,现在一切正常了。希望这可以在某个阶段对其他人有所帮助:-)

关于ios - 如何在通过 UITableViewCell 中的 XIB 加载的 subview 中对标签和 UILabels/UIImageViews 进行初始样式设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44163474/

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