From f45d90ba504496e68d6a4cb2f7f887c011e9b19d Mon Sep 17 00:00:00 2001 From: Nicholas Tay Date: Fri, 18 Mar 2022 14:04:12 +1100 Subject: Split table view cell into separate file Cell no longer uses prototypes as registered in the Storyboard. Instead is a custom class inheriting the UITableViewCell and is manually registered by the VC. This is a first step towards reimplementing the prototype cells. Only has one label at the moment. --- foray/ForayNewTableViewCell.swift | 39 ++++++++++++++++++++++++++++++++++++ foray/ForayTableViewController.swift | 27 ++++++++++++++++--------- 2 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 foray/ForayNewTableViewCell.swift (limited to 'foray') diff --git a/foray/ForayNewTableViewCell.swift b/foray/ForayNewTableViewCell.swift new file mode 100644 index 0000000..b2b22af --- /dev/null +++ b/foray/ForayNewTableViewCell.swift @@ -0,0 +1,39 @@ +// +// ForayNewTableViewCell.swift +// foray +// +// Created by Nicholas Tay on 18/3/2022. +// + +import UIKit +import SnapKit + +class ForayNewTableViewCell: UITableViewCell { + + let nameLabel: UILabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + initialiseViews() + } + + required init?(coder: NSCoder) { + fatalError("unreachable") + } + + private func initialiseViews() { + contentView.addSubview(nameLabel) + setupConstraints() + } + + private func setupConstraints() { + nameLabel.snp.makeConstraints { (make) in + make.top.bottom.equalToSuperview().inset(8) + make.leading.trailing.equalToSuperview().inset(8) + } + } + + public func setData(str: String) { + nameLabel.text = str + } +} diff --git a/foray/ForayTableViewController.swift b/foray/ForayTableViewController.swift index ae8ff25..8f11285 100644 --- a/foray/ForayTableViewController.swift +++ b/foray/ForayTableViewController.swift @@ -55,6 +55,9 @@ class ForayTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() + // Register our custom cell + tableView.register(ForayNewTableViewCell.self, forCellReuseIdentifier: "ForayNewTableViewCell") + // Not sure if this is the right way to go about this... let alert = UIAlertController(title: nil, message: "Grabbing data...", preferredStyle: .alert) let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50)) @@ -149,17 +152,21 @@ class ForayTableViewController: UITableViewController { override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let item = self.sections[indexPath.section].items[indexPath.row] - let cell: ForayTableViewCell - switch item.type { - case .item: - cell = tableView.dequeueReusableCell(withIdentifier: "ForayCell", for: indexPath) as! ForayTableViewCell - cell.cellItemImage?.image = UIImage(named: item.id) - case .quest: - cell = tableView.dequeueReusableCell(withIdentifier: "ForayQuestCell", for: indexPath) as! ForayTableViewCell - } - cell.cellItemName?.text = item.name - cell.cellItemSubtitle?.text = "ID: " + item.id +// let cell: ForayTableViewCell +// switch item.type { +// case .item: +// cell = tableView.dequeueReusableCell(withIdentifier: "ForayCell", for: indexPath) as! ForayTableViewCell +// cell.cellItemImage?.image = UIImage(named: item.id) +// case .quest: +// cell = tableView.dequeueReusableCell(withIdentifier: "ForayQuestCell", for: indexPath) as! ForayTableViewCell +// } +// +// cell.cellItemName?.text = item.name +// cell.cellItemSubtitle?.text = "ID: " + item.id + + let cell: ForayNewTableViewCell = tableView.dequeueReusableCell(withIdentifier: "ForayNewTableViewCell", for: indexPath) as! ForayNewTableViewCell + cell.setData(str: item.name) return cell } -- cgit