我有一个tableView,我在其中显示我在另一个类中创建的0个对象。对象存储在数组中。
var whiskyArray = [WhiskyBuilder]()
在whiskyArray中,我创建了一个字典,将数据移动到tableView中。字典是以第一个字母为键,对象名称为值:
var alphabetizedWhiskies = [String: [WhiskyBuilder]]()
现在我想从tableView中删除带有commitEditingStyle:
的单元格,我使用以下方法:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
if editingStyle == UITableViewCellEditingStyle.Delete {
alphabetizedWhiskies[Array(alphabetizedWhiskies.keys.sort())[indexPath.section]]!.removeAtIndex(indexPath.row)
if alphabetizedWhiskies[Array(alphabetizedWhiskies.keys.sort())[indexPath.section]]!.count == 0 {
alphabetizedWhiskies.removeValueForKey(Array(alphabetizedWhiskies.keys.sort())[indexPath.section])
tableView.deleteSections(NSIndexSet(index:indexPath.section), withRowAnimation: .Fade)
}else {
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
alphabetizedWhiskies.removeValueForKey(Array(alphabetizedWhiskies.keys.sort())[indexPath.row])
}
}
这种方法实际上很完美,细胞被删除了。但每次我返回此视图时,已删除的单元格将再次返回到表格中。 我是swift的新手,但我认为这是因为在字典中删除了单元格,但是whiskyArray中的对象不是。我试图删除whiskyArray中的对象:
whiskyArray.removeAtIndex(indexPath.row)
但有了这个,whiskyArray中的任何对象都会被删除,但不会删除我要删除的对象。那么如何通过删除tableView中的单元格来在whiskyArray中访问要删除的正确对象。我发现了很多关于删除tableViewCells的内容,但我没有找到,如何删除Array中的含义对象。有人能帮助我吗?
答案 0 :(得分:0)
您需要确保它实际上已从数据中删除。当你从数组中删除它时,它只是一个本地副本,当你离开视图并返回时,我的猜测是你正在重新将数据重新加载到数组中。它与您的UITableView代码无关。
答案 1 :(得分:0)
好的......根据我所知,你有多个问题。
首先,无论你在
中使用什么价值func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ???????????
}
删除删除的内容时,不会被更改。行消失的原因是您手动删除了行,然后在重新加载视图时调用了tableView.reloadData()。
我不会使用这些行。
tableView.deleteSections(NSIndexSet(index:indexPath.section), withRowAnimation: .Fade)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
这个函数正在运行的事实意味着tableView已经计划删除相应的indexPath ...除非你真的想删除的不只是那个indexPath。
下一步...每次取消视图控制器时(返回上一个视图或使用Show Detail Segue和其他条件时会发生这种情况),您将失去viewController的状态,viewDidLoad将在第一个方向开始除非您将信息存储在Core Data等永久存储中。
接下来就是你正在使用排序功能。因为您正在使用它们,所以您必须确保whiskyArray中的信息以相同的方式排序,或者删除的对象看起来是随机的。