从 UITableview 中的数组中删除项目
Posted
技术标签:
【中文标题】从 UITableview 中的数组中删除项目【英文标题】:Remove item from array in UITableview 【发布时间】:2020-05-10 02:34:13 【问题描述】:我想要完成的是,当用户为 UITableView 选择一个元素时,此元素将附加到 servicioseleccionado
array。但我陷入了困境,因为如果用户决定取消选择我想从数组中删除该项目的单元格。我已经尝试过anyarray.remove(at:)
,但我可以找到进入该索引的方法。
这是我目前的代码。
class ServicioHogarViewController: UIViewController
let serviciosHogar = [String](arrayLiteral: "Alfombras", "Muebles Madera", "Sillones", "Marmol", "Aplicación Teflón","Vestiduras", "Salas", "Colchones", "Sillas Oficinas")
@IBOutlet weak var servicioHogarTB1: UITableView!
var selectedIndex : Int? = nil
var servicioSeleccionado : [String] = []
@IBAction func doneButton(_ sender: UIButton)
performSegue(withIdentifier: "datePick2", sender: self)
override func viewDidLoad()
super.viewDidLoad()
servicioHogarTB1.delegate = self
servicioHogarTB1.dataSource = self
servicioHogarTB1.register(UINib(nibName: "ServicioHogarCell", bundle: nil), forCellReuseIdentifier: "servicioCell1")
servicioHogarTB1.separatorStyle = .none
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(true)
print(servicioSeleccionado)
// MARK : UITabeView Delegation
extension ServicioHogarViewController : UITableViewDelegate, UITableViewDataSource
func numberOfSections(in tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return serviciosHogar.count
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
if tableView.cellForRow(at: indexPath)?.accessoryType == .checkmark
tableView.cellForRow(at: indexPath)?.accessoryType = .none
else
tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
if tableView.cellForRow(at: indexPath)?.accessoryType == .checkmark
servicioSeleccionado.append(serviciosHogar[indexPath.row])
print(servicioSeleccionado)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "servicioCell1", for: indexPath) as! ServicioHogarCell
let servicio = serviciosHogar[indexPath.row]
cell.servicioLabel.text = servicio
return cell
【问题讨论】:
【参考方案1】:如果你有一个数组:
var cast = ["Vivien", "Marlon", "Kim", "Karl"]
如果你想从中删除“Marlon”,你可以使用数组的func firstIndex(of: Element) -> Int?
方法找到Marlon的索引,然后像这样删除它:
if let index = cast.firstIndex(of: "Marlon")
cast.remove(at: index)
print(cast)
也就是说,在 didSelectRowAt
上为您的数组运行此函数,您将完成您想要的。
【讨论】:
非常感谢,帮了大忙。以上是关于从 UITableview 中的数组中删除项目的主要内容,如果未能解决你的问题,请参考以下文章
从 Parse Array 中删除项目后 UITableView 崩溃
iOS 从 UITableView 滑动以删除 plist 中的数组
iPhone UITableView 从平面数组填充可变行部分