从tableView删除行的正确方法是什么?

时间:2018-06-26 23:09:25

标签: ios swift uitableview delete-row

在Xcode 9中,我有一个tableView,其中包含从CoreData中提取的数据列表。数据的添加,编辑和保存工作正常,但是当我尝试删除数据时,我遇到了一个难题,一个难题使应用程序崩溃,另一个难题。

如果我使用以下代码,它将从CoreData和tableview中删除数据,但没有.fade选项。它只是从tableView中消失了。

  override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
         context.delete(tasks[indexPath.row])
         tasks.remove(at: indexPath.row)
         saveTasks()
  }

如果我使用以下选项,则应用程序将崩溃。

  override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
         context.delete(tasks[indexPath.row])
         tableView.deleteRows(at: [indexPath], with: .fade)
         saveTasks()
  }

如何在以下位置将.fade选项应用于删除??

1 个答案:

答案 0 :(得分:1)

您需要结合这两种解决方案:

<button type="button" class="load-some-stuff" id="btnOne">One</button>
<button type="button" class="load-some-stuff" id="btnTwo">Two</button>
<button type="button" class="load-some-stuff" id="btnThree">Three</button>

基本上,您必须既更新数据($(function(){ $('.load-some-stuff').on('click', function(e){ switch(this.id) { case 'btnOne': $('#some-container').load('example.com'); break; case 'btnTwo': $('#some-container').load('example.com'); break; case 'btnThree': $('#some-container').load('example.com'); break; } }); }); ),又告诉$(function(){ $('.load-some-stuff').on('click', function(e){ // the current button var _this = $(this); switch(this.id) { case 'btnOne': $('#some-container').load('example.com', function(){ _this.off('click'); }); break; case 'btnTwo': $('#some-container').load('example.com', function(){ _this.off('click'); }); break; case 'btnThree': $('#some-container').load('example.com', function(){ _this.off('click'); }); break; } }); }); 重新加载。