我试图从单元格的自定义类中获取单元格indexPath。
当我这样说的时候:
let indexPath :NSIndexPath = (self.superview!.superview as! UITableView).indexPath(for: self)! as NSIndexPath
它在iOS 10设备上运行正常,但在iOS 11模拟器上,它会出现此错误
Could not cast value of type 'UIView' (0x10636c5d8) to 'UITableView'
那么,当我改变它并以这种方式表达时:
let indexPath :NSIndexPath = (self.superview! as! UITableView).indexPath(for: self)! as NSIndexPath
它在iOS 11模拟器上工作正常,但在iOS 10设备上,它会出现此错误:
Could not cast value of type 'UITableViewWrapperView' to 'UITableView'
我可以做些什么才能让它在iOS 10和11上运行?
答案 0 :(得分:0)
虽然在自定义单元格中获取索引路径是一个糟糕的设计。您可以检查您正在运行的版本并实现逻辑以获取indexPath。
// INDEXPATH VARIABLE
var indexPath :NSIndexPath!
// CHECK FOR IOS 11 AND ABOVE
if #available(iOS 11, *) {
// CALCULATE USING TABLE VIEW
indexPath = (self.superview! as! UITableView).indexPath(for: self)! as NSIndexPath
} else {
// CALCULATE USING TABLEVIEW WRAPPER
indexPath = (self.superview!.superview as! UITableView).indexPath(for: self)! as NSIndexPath
}
希望这有帮助。