如何在通过 UITableViewCell 中的 XIB 加载的子视图中对标签和 UILabels/UIImageViews 进行初始样式设置
Posted
技术标签:
【中文标题】如何在通过 UITableViewCell 中的 XIB 加载的子视图中对标签和 UILabels/UIImageViews 进行初始样式设置【英文标题】:How to do initial styling of labels and UILabels/UIImageViews in a sub view which is loaded via an XIB in a UITableViewCell 【发布时间】:2017-05-24 16:05:39 【问题描述】:我有一个 UITableViewCell,它有一个包含标签的子视图(在其内容视图内)、一个图像视图和我需要设置的其他属性。
此子视图是从 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
已加载到内存中并且设置正确,但是它的标签和 imageView 没有,它们是 nil,因此在尝试设置这些视图的样式时它会崩溃.
如何在通过 XIB 加载的子视图中对标签和图像视图以及所有内容进行初始样式设置?
【问题讨论】:
【参考方案1】:好的,所以我找到了解决方案。问题是我没有添加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
无论如何,现在它可以完美运行了。希望这可以在某个阶段对其他人有所帮助:-)
【讨论】:
以上是关于如何在通过 UITableViewCell 中的 XIB 加载的子视图中对标签和 UILabels/UIImageViews 进行初始样式设置的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableViewCell 中设置 UIButton 状态?
如何根据 UITableViewCell 中的内容调整水平 UICollectionView 的高度
在 iOS 中访问自定义 UITableViewCell 中的视图