【发布时间】:2019-12-12 18:34:12
【问题描述】:
所以我是一个新手,正在尝试一些可重用性。我有一个名为SingleButtonFooterView 的类,它是UIView 的子类,UI 是在.xib 中完成的。
现在我想在UITableViewCell 中使用它。我已经尝试了几乎所有可能的解决方案,但对我没有任何作用。
类代码:
class SingleButtonFooterView: UIView {
@IBOutlet weak var button: Button50!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit(){
let view = UINib(nibName: "SingleButtonFooterView", bundle: nil).instantiate(withOwner: self, options: nil).first as! UIView
view.frame = self.bounds
self.addSubview(view)
}
override func awakeFromNib() {
super.awakeFromNib()
button.backgroundColor = .clear
button.layer.cornerRadius = 5
button.layer.masksToBounds = true
button.titleLabel?.font = UIFont.futura(with: .medium, size: 16)
button.setTitleColor(.white, for: .normal)
self.contentMode = .scaleAspectFit
self.layer.masksToBounds = true
}
}
现在cellForRowAt:
let cellId = "SingleButtonFooterView"
var cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
if cell == nil {
cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: cellId)
let subView = SingleButtonFooterView(frame: cell.frame)
cell.contentView.attachViewWithConstraints(subView)
let _ = subView.viewLoadedFromNibAttached(name: cellId)
}
return cell
在我的 VC 课程的 viewDidLoad() 中。
tableView.register(UINib(nibName: "SingleButtonFooterView", bundle: nil), forCellReuseIdentifier: "SingleButtonFooterView")
简而言之 -> 我想在 UITableViewCell 中使用 UIView 类(使用界面生成器完成的 UI -> .xib)
【问题讨论】:
-
attachViewWithConstraints中的内容是什么 -
是的,我忘了添加那个 sn-p 事实上我会从我一直在寻求帮助的地方分享 SO 答案,它基本上有所有的 sn-ps,stackoverflow.com/questions/41851892/…
-
感谢@ElTomato 的评论,但在我的情况下
tableview渲染是通过编程方式完成的。您分享的帖子也与我提出的问题不符。 =)
标签: ios swift uitableview uiview reusability