gpt4 book ai didi

ios - 以编程方式在 Swift 中自定义 UITableViewCell

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:16 27 4
gpt4 key购买 nike

我希望以编程方式在 Swift 中创建一个 UITableView 和相应的自定义 UITableViewCell。 TableView 运行良好,但单元格标签似乎没有实例化 - 它们返回为 nil。

我也不知道在调整元素大小时如何引用内容 View 大小。

UITableViewCell

import UIKit

class BusUITableViewCell: UITableViewCell {

var routeNumber: UILabel!
var routeName: UILabel!

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

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


override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
routeName = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) // not sure how to refer to the cell size here

contentView.addSubview(routeNumber)
contentView.addSubview(routeName)
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

}

UITableView 委托(delegate)和源代码

import Foundation
import UIKit

class BusUITableView: NSObject, UITableViewDelegate, UITableViewDataSource {

var routeService: RouteService = RouteService()

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

var busRoutes: [Route] = routeService.retrieve()
return busRoutes.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

var cell:BusUITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as BusUITableViewCell

var busRoutes: [Route] = routeService.retrieve()

cell.routeName.text = "test" // test string doesn't work, returns nil
return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


}

}

View Controller

    mainTableView.registerClass(BusUITableViewCell.self, forCellReuseIdentifier: "cell")

最佳答案

如果您没有链接到 Storyboard中的原型(prototype)单元格,那么您需要使用 registerClass(_ cellClass: AnyClass,
forCellReuseIdentifier 标识符:String)

在你的情况下你会使用这样的东西

  tableview.register(BusUITableViewCell.self, forCellReuseIdentifier:"cell")

另外,如果没有 NIB 文件,awakeFromNib 将不会被调用。

编辑:.registerClass() 已重命名为 .register()

关于ios - 以编程方式在 Swift 中自定义 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749489/

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