在静态TableView中添加和设置TableViewCell

时间:2017-09-12 15:49:20

标签: ios swift uitableview uibutton

我有一个静态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]
}

在第三部分,我有一个单元格,有两个标签,两个textFields和一个按钮。如果点击该按钮,我想在此部分添加另一个单元格,就像第一个单元格一样。

有人知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

正如文件所说(link):

  

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

     

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

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

所以问题的答案要么是实现动态tableView,在这种情况下insertRow(at:with:)(加上dataSource方法)应该完成工作,或者在storyboard中添加所需的输入并隐藏它直到条件成立。

答案 1 :(得分:1)

在按钮的IBAction中,您只需调用tableView.insertRows即可在指定行插入新单元格。

@IBAction func addNewCell(){
    tableView.insertRows(at: [IndexPath(row: 1, section: 2)], with: .none)
}

答案 2 :(得分:0)

使用所需的单元格布局创建一个新的.xib文件。

然后使用UITableView的register(_ nib: UINib?, forCellReuseIdentifier identifier: String)将其注册到您的静态表格视图中。

然后只需将dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath)与单元格的标识符一起使用就可以了。