在两个部分ios Swift之间移动UITableViewCell

时间:2015-03-16 11:42:48

标签: ios swift

我正在使用两个部分, 第1节     细胞0     细胞1     细胞3和 第2节     细胞0     细胞1     细胞3

但我想在第1部分中移动第2部分的单元格0 任何人都可以使用swift编程解释我的代码

2 个答案:

答案 0 :(得分:3)

基本上,您需要了解数据源需要更新才能更换单元格,否则您会崩溃。

请看以下示例:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var data : [[String]] = [["Mike", "John", "Jane"], ["Phil", "Tania", "Monica"]]

    @IBOutlet weak var tableView: UITableView!
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return data.count
    }
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data[section].count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
        let name = data[indexPath.section][indexPath.row]
        (cell.viewWithTag(22) as UILabel).text = "(" + String(indexPath.section) + ":" + String(indexPath.item) + ") " + name

        return cell
    }

    @IBAction func pressed(sender: UIButton) {

        // arbitrarily define two indexPaths for testing purposes
        let fromIndexPath = NSIndexPath(forRow: 0, inSection: 0)
        let toIndexPath = NSIndexPath(forRow: 0, inSection: 1)

        // swap the data between the 2 (internal) arrays
        let dataPiece = data[fromIndexPath.section][fromIndexPath.row]
        data[toIndexPath.section].insert(dataPiece, atIndex: toIndexPath.row)
        data[fromIndexPath.section].removeAtIndex(fromIndexPath.row)

        // Do the move between the table view rows
        self.tableView.moveRowAtIndexPath(fromIndexPath, toIndexPath: toIndexPath)


    }
}

这里我有一个最简单的二维数组,它包含一些名称。我将其定义为[[String]]以避免以后再将其强制转换。在我的故事板中,我有一个叫“按下”的按钮。我交换了数据源,然后调用moveRowAtIndexPath。

答案 1 :(得分:0)

尝试使用:

tableView.moveRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 2), toIndexPath: NSIndexPath(forRow: 0, inSection: 1))

在调用此方法之前,不要忘记更新您的数据模型