2017-02-13 4 views
0

デフォルトの動作として、一度テーブルビューの任意のセルを削除したい場合は、セルの左側にある削除ボタンをタップし、セルの右側に削除確認ボタンを表示してから続行しますこのボタンをタップすると、この行は削除されます。この動作では、行を削除するには2つの手順が必要です。確認ボタンをタップせずにセルを削除するには、削除ボタン(セルの左側)をタップするだけです。UITableView削除ボタンの機能をカスタマイズする

+0

?スクリーンショットを撮ってください。 – Vahid

+0

テーブルセルにボタンアイコンイメージを追加してボタンを追加し、テーブル行を削除するカスタマイズメソッドを作成することができます。 –

+0

それは私の心の中の解決策です。しかし、私はそれが最善の方法であり、よりよい解決を楽しみにしているかどうかはわかりません。 –

答えて

0

左にスワップするだけで行を削除することを意味しますか?削除ボタンを無視しますか?

class YourViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var swipe = UISwipeGestureRecognizer(target: self, action: #selector(self.didSwipe)) 
     self.tableView.addGestureRecognizer(swipe) 
    } 

    func didSwipe(recognizer: UIGestureRecognizer) { 

     if swipe.state == UIGestureRecognizerState.Ended { 

      let swipeLocation = swipe.locationInView(self.tableView) 

      if let swipedIndexPath = tableView.indexPathForRowAtPoint(swipeLocation) { 

       if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath) { 

        self.cellObjectsArray.remove(at: swipedIndexPath.row) 
        tableView.deleteRows(at: [swipedIndexPath], with: .fade) 
       } 
      } 
     } 
    } 

} 
+0

Questionerは、確認ボタンをタップせずにセルを削除するには、左ボタンをタップするだけですか?**交換しないで行を削除しないでください。 –

+0

遅く返事を申し訳ありません。セルの左側にある削除ボタンを1回タップするだけで、セルの右側にある確認ボタンをタップする必要はありません。デフォルトの動作として、行を削除するには2つの手順が必要です。 –

+0

これが当てはまる場合、私はVahidの質問を私自身にします:_左のボタンはありますか?スクリーンショットを撮ってください._ 私が知る限り、デフォルトの動作は左にスワイプしてから削除ボタンを確認しています。 –

0

あなたは、次のデリゲートメソッドを実装することにより、セルを削除することができますが、これは

  1. スワイプセル、2段階のプロセスである:

    あなたはこのように、UISwipeGestureRecognizerを使用することができます右側の削除確認ボタンを見つけるには

  2. 削除をクリックしてください(commitEditingStyleが呼び出されます)

あなたは/シングルステップでそれを行う]をクリックし、UITableViewCellindexpathは、データソースからオブジェクトを削除し、テーブルをリロード取得UITableViewCellに、そのセレクタにカスタムボタンを追加したい場合は、これはコードに似ていますcommitEditingStyleメソッドで実装されています。ボタンを左


- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"Delete"; 
} 

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewCellEditingStyleDelete; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Delete the object at `indexPath` from datasource 
    //Update UI, by reloading section/entire table 
} 
関連する問題