UITableView删除行

时间:2017-05-02 18:34:32

标签: swift tableview tableviewcell

我正在创建一个表视图,我想创建一个函数,您可以通过向右滑动并点击删除按钮来删除行。我和我的老师已经尝试了大约半个小时来解决这个问题,但似乎没有任何效果。

 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)
        }
    }
}

2 个答案:

答案 0 :(得分: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了解详情。

答案 1 :(得分: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)
    }
}