【问题标题】:Adding and setting up a TableViewCell in a static TableView在静态 TableView 中添加和设置 TableViewCell
【发布时间】: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 在术语上是矛盾的。

标签: ios swift uitableview uibutton


【解决方案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) 与单元格的标识符一起使用即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-09
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多