我有一个静态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和一个按钮。如果点击该按钮,我想在此部分添加另一个单元格,就像第一个单元格一样。
有人知道怎么做吗?
答案 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)
与单元格的标识符一起使用就可以了。