如何编辑细胞行?

时间:2017-07-06 07:47:44

标签: swift row cell editing

我无法在单元格的第一行打开编辑模式。我试过这段代码,但没有用。

   public func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
            if indexPath.row == 1{
                return true
            }
            return false
        }

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

如果要编辑第一行,请替换

if indexPath.row == 1 

if indexPath.row == 0 

因为indexPath.row从0开始而不是从1开始。

希望这会有所帮助。

修改

由于您没有显示完整的代码,我在此处添加示例代码。

检查以下代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tbl: UITableView!

    let arr = ["1", "2", "3"]

    override func viewDidLoad() {
        super.viewDidLoad()
        tbl.dataSource = self
        tbl.delegate = self
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = self.tbl.dequeueReusableCell(withIdentifier: "cell")!

        cell.textLabel?.text = self.arr[indexPath.row]

        return cell
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arr.count
    }

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

        //set 0 for first cell
        if indexPath.row == 0 {
            return true
        }
        return false
    }

    //Need this method for delete cell
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

        if editingStyle == UITableViewCellEditingStyle.delete {
            tbl.reloadData()
        }
    }
}

答案 1 :(得分:0)

首先,确保您已添加UITableViewDataSource协议。其次,您可能还需要以下实现。

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let myAction = UITableViewRowAction(style: .normal, title: "MY_ACTION") { (action, indexPath) in
        print("I'm here")
    }

    return [myAction]
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

}