在静态 TableView 中添加和设置 TableViewCell
Posted
技术标签:
【中文标题】在静态 TableView 中添加和设置 TableViewCell【英文标题】:Adding and setting up a TableViewCell in a static TableView 【发布时间】:2017-09-12 15:49:19 【问题描述】:我有一个静态的 TableView,它实际上是一个输入表单。此表单有 5 个部分,每个部分的单元格数量不同:
let numberOfRowsAtSection:[Int] = [5,3,1,1,2]
override func numberOfSectionsInTableView(tableView: UITableView) -> Int
return numberOfRowsAtSection.count
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return numberOfRowsAtSection[section]
在第三部分中,我有一个单元格,其中包含两个标签、两个文本字段和一个按钮。如果点击按钮,我想在此部分添加另一个单元格,就像第一个单元格一样。
有人知道怎么做吗?
【问题讨论】:
Adding 和 static 在术语上是矛盾的。 【参考方案1】:正如文档所说 (link):
动态原型。设计一个原型单元,然后将其用作 表格中其他单元格的模板。使用动态原型 表格中的多个单元格应使用相同的布局来显示 信息。动态内容由表视图数据源管理 (表视图控制器)在运行时,具有任意数量的 细胞。
静态单元。使用静态内容设计整体布局 表格,包括单元格的总数。静态表格视图 content 有一组固定的单元格,您可以在设计时对其进行配置 时间。您还可以配置其他静态数据元素,例如 节标题。当表格不更改其内容时使用静态单元格 布局,无论它显示的具体信息如何。
此外,同一份文档说静态表视图不应实现任何 dataSource 方法。
所以你的问题的答案是要么实现一个动态tableView,在这种情况下insertRow(at:with:)
(加上dataSource
methods)应该完成这项工作,或者在情节提要中添加所需的输入并将其隐藏,直到条件满足持有。
【讨论】:
【参考方案2】:在按钮的IBAction
中,只需调用tableView.insertRows
即可在指定行插入新单元格。
@IBAction func addNewCell()
tableView.insertRows(at: [IndexPath(row: 1, section: 2)], with: .none)
【讨论】:
【参考方案3】:使用您想要的单元格布局创建一个新的 .xib 文件。
然后使用 UITableView 的register(_ nib: UINib?, forCellReuseIdentifier identifier: String)
将其注册到您的静态表格视图中。
然后只需将dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath)
与单元格的标识符一起使用即可。
【讨论】:
以上是关于在静态 TableView 中添加和设置 TableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
如何覆盖 tableView:titleForHeaderInSection: 以调整静态 UITableViews 的节标题?