在静态 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]

在第三部分中,我有一个单元格,其中包含两个标签、两个文本字段和一个按钮。如果点击按钮,我想在此部分添加另一个单元格,就像第一个单元格一样。

有人知道怎么做吗?

【问题讨论】:

Addingstatic 在术语上是矛盾的。 【参考方案1】:

正如文档所说 (link):

动态原型。设计一个原型单元,然后将其用作 表格中其他单元格的模板。使用动态原型 表格中的多个单元格应使用相同的布局来显示 信息。动态内容由表视图数据源管理 (表视图控制器)在运行时,具有任意数量的 细胞。

静态单元。使用静态内容设计整体布局 表格,包括单元格的总数。静态表格视图 content 有一组固定的单元格,您可以在设计时对其进行配置 时间。您还可以配置其他静态数据元素,例如 节标题。当表格不更改其内容时使用静态单元格 布局,无论它显示的具体信息如何。

此外,同一份文档说静态表视图不应实现任何 dataSource 方法。

所以你的问题的答案是要么实现一个动态tableView,在这种情况下insertRow(at:with:)(加上dataSourcemethods)应该完成这项工作,或者在情节提要中添加所需的输入并将其隐藏,直到条件满足持有。

【讨论】:

【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在静态表视图底部添加动态表视图?

Swift静态TableView添加额外的行

如何覆盖 tableView:titleForHeaderInSection: 以调整静态 UITableViews 的节标题?

使用 UIBezierPath 的带有圆角的 TableView 页眉和页脚

在 tableview 上添加视图

如何为我的静态 UITableView 添加页脚?