0
votes

i am trying to resort UITableView cell's by long press then drag and drop the cell , its not working when i use Custom cell view any idea why !

Here is the TableView viewcontroller :

    override func viewDidLoad()
    {
        super.viewDidLoad()

        // Then delegate the TableView
        self.tableView.delegate = self
        self.tableView.dataSource = self

        // Register table cell class from nib
        let bundle       = Bundle(for: type(of: self))
        let cellNib = UINib(nibName: "tbc_song_vertical", bundle: bundle)
        self.tableView.register(cellNib, forCellReuseIdentifier: "tbc_song_vertical")

        //Loading Template
        let nib_tbc_loading = UINib(nibName: "tbc_loading", bundle: bundle)
        self.tableView.register(nib_tbc_loading, forHeaderFooterViewReuseIdentifier: "tbc_loading")

        //Automated ell height
        self.tableView.estimatedRowHeight = 44.0
        self.tableView.rowHeight          = UITableViewAutomaticDimension
        self.tableView.reloadData()

        self.tableView.isEditing = true
    }

    // MARK: - Sorting

     func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        return .none
    }

     func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
        return false
    }

     func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        let movedObject = self.data[sourceIndexPath.row]
            data.remove(at: sourceIndexPath.row)
            data.insert(movedObject, at: destinationIndexPath.row)

        // To check for correctness enable: self.tableView.reloadData()
    }

    //loading footer
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let footerView    = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: "tbc_loading") as! tbc_loading
        footerView.startAnimate()
        return footerView
    }

    //loading footer
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

        return ( self.is_fetching ) ? 40 : 0
    }

    //Pagination
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {

        //Bottom Refresh
        if scrollView == tableView{

            if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height )
            {

            }
        }
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return data.count
    }

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

           cell.fillwithInfo(dto: self.data[indexPath.row] )

        return cell
    }

    // Tabbed Cell
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

}

only if i use custom view its not working , but when i hold my finger on the right side of any cell to drag it up or down its dragging all the table

1

1 Answers

1
votes

Add the following method

func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
    return true
}