Я в настоящее время учится Swift
programatically. Я хочу добавить tableView
в viewController
(с целью управления ограничениями позже) и настроить ячейки с помощью TableViewCell
.Пустые ячейки в TableView с пользовательским TableViewCell - Swift
Я могу сделать это с закрытыми глазами при использовании storyboard
, но когда я попытаюсь сделать это с помощью простого кода, у меня есть пустые ячейки.
Мой раскадровки состоит из одного (1) пустого viewController
, который имеет собственный класс ViewController
Я смотрел на других с подобными проблемами, но не решения работали. Хотелось бы узнать, что я просматриваю (возможно, что-то простое). Заранее спасибо за помощь!
ViewController.swift:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
var tableView: UITableView = UITableView()
var items: [String] = ["Viper", "X", "Games"]
override func viewDidLoad() {
tableView.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height)
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "cell")
self.view.addSubview(tableView)
}
func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
return 50
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.items.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell
//cell.textLabel?.text = self.items[indexPath.row]
cell.companyName.text = "name"
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
TableViewCell:
import UIKit
class TableViewCell: UITableViewCell {
var companyName = UILabel()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
companyName.frame = CGRectMake(0, 0, 200, 20)
companyName.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(companyName)
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Спасибо! Это то, что я получил после того, как @replman указал в правильном направлении. Что вы подразумеваете под «инициализацией своего ярлыка перед его использованием». Он инициализирован. – Geppelt
Вы просто установили рамку UILabel, так как вы не сделали xib для своей ячейки лучше, чтобы сделать это, прежде чем добавлять ее в любой вид, так что вы не получите нулевой объект. также вы должны реализовать метод prepareForReuse в классе ячеек для очистки перед следующим использованием объекта. –
Мне не нужен xib-файл, и я не понимаю, что вы имеете в виду; UIImageView объявляется, обрамляется и добавляется. Я не являюсь опытом и проблемой с нулевыми объектами. – Geppelt