答案 0 :(得分:0)
我想你想扩展和折叠tableview单元格。但是abouv库也不错。但是,如果你想在没有任何库的情况下学习如何做到这一点,并且有很多关于tableview的东西你将来可能会有所帮助。 演示和链接一步一步https://www.raywenderlich.com/129059/self-sizing-table-view-cells。
另外,您可以直接从这里下载演示。https://github.com/soapyigu/Swift30Projects/tree/master/Project%2005%20-%20Artistry。您还会在我给您的第一个网址上找到下载链接。
答案 1 :(得分:0)
您可以创建自定义视图并将其用作tableView的footerview。添加点击识别器(或者您可以添加按钮),以便当用户点击它时,您可以修改您的dataSource。见下文:
protocol FooterDelegate {
func requestedToDisplayMoreItemsFrom(footer: Footer, display:Bool)
}
class Footer: UIView {
var delegate : FooterDelegate?
var section : Int?
override func awakeFromNib() {
let tapReco = UITapGestureRecognizer(target: self, action: #selector(Footer.tapped))
/*
. setup
. codes
. here
.
*/
}
func tapped() {
if let del = delegate {
del.requestedToDisplayMoreItemsFrom(footer: self, display: true)
}
}
}
以下是如何使用它。我不会发布任何关于如何将其显示为footerView的代码,我很确定你可以自己编写,如果没有,你可以找到很多资源。
class ViewController: UIViewController, FooterDelegate {
var dataSource = [[String],[String]]
func requestedToDisplayMoreItemsFrom(footer: Footer, display: Bool) {
if display {
self.dataSource[footer.section!].append("item1")
self.dataSource[footer.section!].append("item2")
self.dataSource[footer.section!].append("item3")
} else {
self.dataSource[footer.section!].removeLast()
self.dataSource[footer.section!].removeLast()
self.dataSource[footer.section!].removeLast()
}
self.tableView.reloadData()
}
答案 2 :(得分:0)
您可以使用此代码插入单元格
var cells: [Any] = [IndexPath(row: 1, section: 2), IndexPath(row: 2, section: 2)]
CATransaction.begin()
CATransaction.setCompletionBlock({() -> Void in
tableView.reloadData()
})
tableView.beginUpdates()
tableView.insertRows(at: cells, with: .fade)
tableView.endUpdates()
CATransaction.commit()
要删除单元格,请使用代码..
var cells: [Any] = [IndexPath(row: 1, section: 2), IndexPath(row: 2, section: 2)]
CATransaction.begin()
CATransaction.setCompletionBlock({() -> Void in
tableView.reloadData()
})
tableView.beginUpdates()
tableView.deleteRows(at: cells, with: .fade)
tableView.endUpdates()
CATransaction.commit()