car*_*ary 0 uitableview custom-cell tableviewcell ios swift
//自定义单元格在一个swift文件中
import UIKit
class CardTableViewCell: UITableViewCell {
@IBOutlet weak var elapsedTime: UILabel!
@IBOutlet weak var todo: UILabel!
@IBOutlet weak var startAndStop: UIView!
@IBOutlet weak var progress: UIView!
@IBOutlet weak var cardView: UIView!
}
Run Code Online (Sandbox Code Playgroud)
//自定义表视图控制器在另一个swift文件中
import UIKit
class CardFeedTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(CardTableViewCell.self, forCellReuseIdentifier: "cardCell")
tableView.delegate = self
tableView.dataSource = self
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 3
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: CardTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cardCell", for: indexPath) as! CardTableViewCell
cell.todo.text = "study"
return cell
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我不知道为什么我的表格单元格中的所有属性都是零.
注册有两种变体,但它们都带有一个名为forCellReuseIdentifier的参数,该参数 是一个字符串,可以让您注册 不同类型的表视图单元格.例如,您可能具有重用标识符"DefaultCell",另一个称为"Heading cell",另一个称为"CellWithTextField",依此类推.以这种方式重用不同的单元有助于节省系统资源.
如果要将register()与Swift类一起使用,则提供表视图单元类作为其第一个参数.如果您的单元格完全由代码定义,则此选项非常有用.例如,这使用默认的UITableViewCell类:
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样将该单元格出列:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DefaultCell")!
return cell
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是将register()与Interface Builder nib文件一起使用.Nib包含要与其设计一起使用的类名,因此这种方法更常见.这是一个例子
tableView.register(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "CellFromNib")
Run Code Online (Sandbox Code Playgroud)
但是如果您正在使用故事板,您会发现创建原型单元并直接在Interface Builder中为它们提供重用标识符会更容易.所以不需要以编程方式注册.
删除此行表单 viewDidLoad
tableView.register(CardTableViewCell.self, forCellReuseIdentifier: "cardCell).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |