セルのカスタムクラス内からセルindexPathを取得しようとしています。Swift iOS:カスタムセルクラスからCellの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.セルまたはテーブルのプライベートサブビュー構造については決して想定しないでください。すべてのiOSアップデートが変更されるようです。 2.セルが独自のindexPathを知る必要があるのはなぜですか?それは悪いデザインです。 – rmaddy
あなたのカスタムセルに親の 'UITableView'への弱い参照を格納してから' indexPath(for:self) 'を呼び出すのはなぜですか?例えば、 'let indexPath = self.parentTableView.indexPath(for:self)! ' –
@rmaddyはそれが悪いデザインであることを知らなかった、私はメンバのテーブルとそのセルインデックスを必要とする各セルのボタンを持っているメンバーのIDに基づくアクション。 – fullMoon