2016-08-15 10 views
0

私のtableViewのcommitメソッドは、ユーザーがスワイプして行を削除したときに呼び出されますが、editActionsForRowAtを使用してアクションの色/テキストをカスタマイズしようとすると、 。コミットと呼ばれます。ここではeditActionsForRowAtが存在する場合、tableViewのcommitメソッドが呼び出されなくなる

は、いくつかのコード上記のコード、その後のtableViewで

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool 
{ 
    return true 
} 

override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle 
{ 
    return .delete 
} 

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) 
{ 
// delete code goes here 
} 

です。しかし、以下のメソッドを追加して背景色とテキストを変更しようとすると、呼び出されるのが止まります。

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? 
{ 
    let delete = UITableViewRowAction(style: .destructive, title: "Remove") { (action, indexPath) in 
    } 
    delete.backgroundColor = UIColor.lightGray 
    return [delete] 
} 

なぜeditActionsForRowAtメソッドを追加すると、コミットメソッドが呼び出されなくなるのですか?

答えて

0

editActionsForRowAtを使用する場合、commit関数は呼び出されません。 commit関数にコードを入力するのではなく、UITableViewRowActionのクロージャに入れてください:

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? 
{ 
    let delete = UITableViewRowAction(style: .destructive, title: "Remove") { (action, indexPath) in 
     // delete code should go here instead 
    } 
    delete.backgroundColor = UIColor.lightGray 
    return [delete] 
} 
関連する問題