gpt4 book ai didi

ios - 使用自定义 TableViewCell 的 TableView 中的空单元格 - Swift

转载 作者:可可西里 更新时间:2023-11-01 00:37:12 24 4
gpt4 key购买 nike

我目前正在以编程方式学习 Swift。我想将 tableView 添加到 viewController(以便以后能够操作约束)并使用 TableViewCell 自定义单元格>.

使用 storyboard 时,我可以闭着眼睛执行此操作,但当我尝试仅使用直接代码执行此操作时,我的单元格为空。

我的 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.
}
}

表格 View 单元格:

 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
}

}

最佳答案

你好@Michael 首先,当你使用 .xib(Nib) 时你应该只使用 awakeFromNib 并且在你的情况下你使用的是没有这样的 xib 的自定义类所以你应该使用

 override init(style: UITableViewCellStyle, reuseIdentifier: String?){
super.init(style: style, reuseIdentifier: reuseIdentifier)

companyName = UILabel(frame: CGRectMake(0, 0, 200, 20))
contentView.addSubview(companyName)

}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

您还应该在使用标签之前对其进行初始化。这将解决您的问题。

阅读苹果关于子类化 UITableViewCell 的文档 here .

关于ios - 使用自定义 TableViewCell 的 TableView 中的空单元格 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215193/

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