我目前正在以編程方式學習Swift
。我想將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,所以最好這樣做,所以你最終不會得到零對象。還應該在cell類中實現prepareForReuse方法,以便在下次使用該對象之前進行清理。 –
我不想要一個xib文件,我不明白你的意思; UIImageView被聲明,構建並添加。我不是經驗和問題的零對象。 – Geppelt