我正在关注raywenderlich(How To Make A Swipeable Table View Cell With Actions)网站的教程,该网站向您展示如何使用图层和委托创建自定义单元格。
现在我把一切都正常工作了,买我希望我的一个细胞关闭,如果其他细胞打开,我该怎么做到这一点?或者像Messenger应用程序一样,不允许用户打开另一个单元格选项,除非它们关闭当前单元格。
我无法绕过这个,我看到很少有人也在评论中提出同样的问题,但没有人回复。
任何具有Objective-C知识的人,没关系,我可以将其翻译为快速自己。
我使用本教程的原因是因为Apple API不允许将自定义按钮(使用PaintCode)用作Action按钮。
答案 0 :(得分:1)
对于试图实现相同方法的其他人,我找到了一个非常简单的解决方案。
由于我们将所有单元存储在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)
}
我希望这有助于他人。 :)