ios - Custom UITableViewCell with xib hiding after click on tableView
问题描述
I'm trying to build a tableView with a custom cell using UITableView programmatically without using a Storyboard but after I finish the tutorial and try to run the app the CustomCell I build,
The custom cell shows but once I click on tableView the custom cell hiding
Can someone check if I miss something? Or maybe it's wrong to use xib with programmatically made tableView?
HomeViewController.swift
class HomeViewController: UIViewController {
fileprivate let homeTableView: UITableView = {
let htm = UITableView()
htm.translatesAutoresizingMaskIntoConstraints = false
return htm
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
homeTableView.register(CusTableViewCell.nib, forCellReuseIdentifier: CusTableViewCell.identifier)
setupTableView()
}
func setupTableView() {
let viewModel = HomeViewModel()
homeTableView.delegate = viewModel
homeTableView.dataSource = viewModel
homeTableView.rowHeight = 100
view.addSubview(homeTableView)
// homeTableView.separatorStyle = .none
homeTableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
homeTableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
homeTableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 0).isActive = true
homeTableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
}
}
CusTableViewCell.swift
class CusTableViewCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
static var nib:UINib {
return UINib(nibName: identifier, bundle: nil)
}
static var identifier: String {
return String(describing: self)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
nameLabel.text = "Something"
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
HomeViewModel.swift
extension HomeViewModel: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: CusTableViewCell.identifier, for: indexPath) as? CusTableViewCell {
cell.backgroundColor = UIColor(red:0.17, green:0.73, blue:0.83, alpha:1.0)
return cell
}
return UITableViewCell()
}
}
解决方案
该问题与对viewModel
.
将viewModel
变量放入控制器类,如下所示:
class HomeViewController {
var viewModel: HomeViewModel!
...
func setupTableView() {
self.viewModel = HomeViewModel()
...
}
}
推荐阅读
- javascript - React-select:无法获取新创建元素的名称
- google-sheets - 仅在 Google 表格中使用 arrayformula 将文本附加到第一列
- javascript - django中使用javascript的变量字典
- python - 访问稀疏 CSR 矩阵中的列
- c - 运行指针程序时出现指针问题
- c++ - 如何在模板中使用迭代器值?
- angular - 我有 2 个集合我想比较并检查 Angular 4 Typescript 是否存在差异
- java - 如何在Java中打印矩阵的所有对角线
- javascript - 在写入 document.cookie 时无法访问死对象?
- postgresql - 从 Google Data Studio 连接到 Heroku Postgres 时出现 SSL 证书错误