gpt4 book ai didi

ios - 单击 tableView 后隐藏 xib 的自定义 UITableViewCell

转载 作者:行者123 更新时间:2023-11-28 23:23:58 24 4
gpt4 key购买 nike

我正在尝试使用 UITableView 以编程方式构建带有自定义单元格的 tableView,而不使用 Storyboard,但在完成教程并尝试运行我构建的 CustomCell 应用程序后,

自定义单元格显示,但一旦我点击 tableView 自定义单元格隐藏

有人可以检查我是否遗漏了什么吗?或者将 xib 与以编程方式制作的 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 变量放入 Controller 类,如下所示:

class HomeViewController {

var viewModel: HomeViewModel!
...

func setupTableView() {
self.viewModel = HomeViewModel()
...
}
}

关于ios - 单击 tableView 后隐藏 xib 的自定义 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59163339/

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