我目前正在创建图书馆应用。我有一个表视图,我已经设置了具有不同书名的数组。我还设置了勾选标记,以便用户可以勾选某些标题。我刚刚在表格视图的底部添加了一个按钮,以便用户可以勾选标题,然后单击按钮以将其从屏幕上删除,有点像检查它们。但是,按钮由于某种原因没有单击,标题也不会从屏幕上删除。我在这个网站上看了很多其他的回复,我甚至尝试了一些,但它们似乎都没有用。有人可以指点我正确的方向吗?我在下面发布我当前的代码。
import UIKit
class CheckOutViewController: UITableViewController {
var books = ["The Grapes of Wrath","The Great Gatsby","Anthem","Brave New World","To Kill A Mockingbird","Of Mice And Men", "Animal Farm", "War and Peace", "Don Quixote","War and Peace","Romeo and Juliet","Gulliver's Travels"]
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return books.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = books[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
}
else{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
}
}
@IBAction func checkOutPressed(_ sender: Any) {
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
if editingStyle == .delete
{
books.remove(at: indexPath.row)
self.tableView.reloadData()
}
}
return true
}
}
答案 0 :(得分:0)
你只需维护一个索引路径数组,如:
var arrTodelete = [IndexPath]()
并在cellforIndexPath中进行一些更改:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellNew", for: indexPath)
....
cell.selectionStyle = .none
if arrTodelete.contains(indexPath){
cell.accessoryType = .checkmark
}else{
cell.accessoryType = .none
}..... }
并选择了代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if arrTodelete.contains(indexPath){
let index = arrTodelete.index(of: indexPath)
arrTodelete.remove(at: index!)
}else{
arrTodelete.append(indexPath)
}
tblView.beginUpdates()
tblView.reloadRows(at: [indexPath], with: .none)
tblView.endUpdates()
}
最后当你点击删除按钮时:
@IBAction func checkOutPressed(_ sender: Any) {
for ele in arrTodelete{
books.remove(at: ele.item)
}
tblView.beginUpdates()
tblView.deleteRows(at: arrTodelete, with: .fade)
tblView.endUpdates()
arrTodelete.removeAll()
tblView.reloadData() }
做这些事情,它会对你起作用..