自定义可滑动的表格查看单元格,关闭其他一个新的查看单元格

时间:2015-10-29 22:38:36

标签: ios uitableview

我正在关注raywenderlich(How To Make A Swipeable Table View Cell With Actions)网站的教程,该网站向您展示如何使用图层和委托创建自定义单元格。

现在我把一切都正常工作了,买我希望我的一个细胞关闭,如果其他细胞打开,我该怎么做到这一点?或者像Messenger应用程序一样,不允许用户打开另一个单元格选项,除非它们关闭当前单元格。

我无法绕过这个,我看到很少有人也在评论中提出同样的问题,但没有人回复。

任何具有Objective-C知识的人,没关系,我可以将其翻译为快速自己。

我使用本教程的原因是因为Apple API不允许将自定义按钮(使用PaintCode)用作Action按钮。

1 个答案:

答案 0 :(得分:1)

对于试图实现相同方法的其他人,我找到了一个非常简单的解决方案。

创建方法 - closeOtherCells:

由于我们将所有单元存储在NSMutableSet中,我们可以看到哪些单元可用于关闭。

func closeOtherCells(close close: Bool){
    if close{

        //Check For Available Cell
        for cells in cellsCurrentEditing {

            //Get Table Cells at indexPath
            var cellToClose: CustomTableViewCell = self.tableView.cellForRowAtIndexPath(cells as! NSIndexPath) as! CustomTableViewCell

            //Call Reset Method in our Custom Cell.
            cellToClose.resetConstraintContstantsToZero(true, notifyDelegateDidClose: true)
        }
    }
}

现在,只需在cellDidOpen:委托方法中使用true参数调用closeOtherCells:

func cellDidOpen(cell: UITableViewCell) {

    //Close Other Cells
    closeOtherCells(close: true)

    //Store Open Cell in NSMutableSet
    let indexPath: NSIndexPath = self.tableView.indexPathForCell(cell)!
    self.cellsCurrentEditing.addObject(indexPath) 
}

我希望这有助于他人。 :)