Swift iOS:从Custom Cell Class获取Cell的IndexPath

时间:2017-07-05 22:49:19

标签: ios xcode uitableview

我试图从单元格的自定义类中获取单元格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上运行?

1 个答案:

答案 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
}

希望这有帮助。