2017-05-02 19 views
2

私はテーブルビューを作成しています。右にスワイプして削除ボタンをタップすると、行を削除できる機能を作りたいと思います。私と私の先生はこの問題を解決するために約30時間は試みましたが、何も動かないようです。UITableView行を削除

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    var StoredValues = Values() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    override func didReceiveMemoryWarning() {// 
     super.didReceiveMemoryWarning() 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     return UITableViewCell() 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     self.performSegue(withIdentifier: "meunSegue", sender: self) 

     func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
      _ = segue.destination as! SecondViewController 
     } 
    } 
    func tableView->(UITableView *)tableView canEditRowsAtIndexPath:(NSIndexPath *)indexPath { 
    return YES 
    } 
    - (void)tableView:(UITableView *)tableView committEditStyle: (UITableViewCellEditingStyle) 
    func tableView { 
     var cell = UITableView.self 
     var Animation = UITableViewRowAnimation(rawValue: 1) 
     if editingStyle == UITableViewCellEditingStyle.delete { 
      cell.deleteRows(indexPath) 
      //cell.deleteRows(at: [NSIndexPath], with: UITableViewRowAnimation.automatic) 

     } 
    } 


    class SecondViewController: UIViewController { 

     var recievedData = "" 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      print(recievedData) 
     } 
    } 
} 
+0

ソースコードはSwiftとObjective-Cの奇妙な組み合わせです。より良いコードで質問をコンパイルして編集できるように、サンプルコードをクリーンアップすることができます。 –

答えて

0

これは、numberOfRowsInSectionデータソースの実装が常に1(固定)を返すためです。

通常、オブジェクトを配列に格納します。これは、行数を定義します。そして、commitEditingStyleは配列からオブジェクトを削除して、その行を削除する必要があります。

– (void)tableView: (UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath {if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [maTheData removeObjectAtIndex:[indexPath row]]; 
     // Delete row using the cool literal version of [NSArray arrayWithObject:indexPath] 

     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

    } 
} 

詳細については、linkを参照してください。

0

このスワイフ機能は、右にスワイプして削除ボタンをタップすると行を削除できます。実際にこの関数はitems配列から項目を削除し、次に行を削除します。さらにこの行はtableViewから削除されました。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == UITableViewCellEditingStyle.delete { 
     // your items include cell variables 
     items.remove(at: indexPath.row) 
     tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic) 
    } 
} 
関連する問題