我在一个tableview控制器(名为A)单元格中有一个表视图(名为B),我在tableView中有一个按钮一个单元格(名为add),在该单元格中我有tableview B和tableview B有一个按钮(名为Delete)和每个单元格的文本字段,所以我想当用户推送添加按钮表视图B重新加载并有一个新行时,当用户按下删除按钮表视图B重新加载并删除该行以便更好地理解我有一个视频,你可以看到这里的链接 https://ufile.io/5x6y1
在此视频中,您可以看到会发生什么以及我想做什么
这里是主表视图类中删除和添加按钮的代码(记住表视图中的添加按钮一个单元格(主表视图单元格和删除按钮位于表格视图B单元格中) (在主表视图(表格视图A)单元格内的表格视图B中的每个单元格中))
var certificates = [String]()
if self.pf.Licences.count != 0 {
for i in 0...self.pf.Licences.count - 1 {
print(self.pf.Licences[i].title!)
self.certificates.append(self.pf.Licences[i].title!)
}
}
self.tableView.reloadData()
}
@IBAction func deleteCer(_ sender: UIButton) {
print("delete")
let buttonRow = sender.tag
certificates.remove(at: buttonRow)
DispatchQueue.main.async {
self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .right)
}
}
@IBAction func addingCertificate(_ sender: UIButton) {
print("add")
if certificates.count != 0 {
if certificates[certificates.count - 1] != "" {
certificates.append("")
DispatchQueue.main.async {
self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .bottom)
}
}
}
else {
print(certificates)
certificates.append("")
print(certificates)
DispatchQueue.main.async {
self.tableView.reloadRows(at: [IndexPath.init(row: 0, section: 6)], with: .bottom)
}
}
}
答案 0 :(得分:0)
为了使您的添加和删除工作,您需要在https://developer.apple.com/documentation/uikit/uitableview的“插入,删除和移动行和节”部分下的UITableView上查看如何执行这些操作。
您确实需要使用insertRows(at:with:)
和deleteRows(at:with:)
,同时确保更新数据源。
如果您的UITableView B有某种控制器,您可能应该向其发送插入和删除消息,而不是父UITableView A.
另一方面,您使用certificates[certificates.count - 1]
的地方可以使用certificates.last
。