ためnilを返す: func indexPath(for cell: UITableViewCell) -> IndexPath?
UITableViewのindexPath(セルの場合:UITableViewCell) - > IndexPath?私は、このメソッドはnilを返している理由として少し混乱している可視セル
ことはここではいくつかのデバッガ出力です:
(lldb) po expandingCell
<MyApp.BankDetailsTableViewCell: 0x7f9ec307da00; baseClass = UITableViewCell; frame = (0 495.01; 414 258); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x60400003ffc0>>
(lldb) po self.tableView.visibleCells
▿ 8 elements
▿ 0 : <MyApp.AddressTableViewCell: 0x7f9ec2e49600; baseClass = UITableViewCell; frame = (0 207.01; 414 70); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x60800022fc40>>
▿ 1 : <MyApp.BankDetailsTableViewCell: 0x7f9ec307da00; baseClass = UITableViewCell; frame = (0 277.01; 414 258); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x60400003ffc0>>
▿ 2 : <MyApp.TransactionLinkTableViewCell: 0x7f9ec585d800; baseClass = UITableViewCell; frame = (0 535.01; 414 70); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x600000025e60>>
- 3 : <MyApp.SeparatorTableViewCell: 0x7f9ec3003000; baseClass = UITableViewCell; frame = (0 605.01; 414 44); autoresize = W; layer = <CALayer: 0x604000225780>>
▿ 4 : <MyApp.GenericFieldTableViewCell: 0x7f9ec3071a00; baseClass = UITableViewCell; frame = (0 649.01; 414 44); autoresize = W; layer = <CALayer: 0x604000226100>>
▿ 5 : <MyApp.GenericFieldTableViewCell: 0x7f9ec28eb600; baseClass = UITableViewCell; frame = (0 693.01; 414 44); autoresize = W; layer = <CALayer: 0x6080004337a0>>
▿ 6 : <MyApp.GenericFieldTableViewCell: 0x7f9ec590c800; baseClass = UITableViewCell; frame = (0 737.01; 414 44); autoresize = W; layer = <CALayer: 0x600000038b60>>
▿ 7 : <MyApp.GenericFieldTableViewCell: 0x7f9ec5849000; baseClass = UITableViewCell; frame = (0 781.01; 414 44); autoresize = W; layer = <CALayer: 0x600000037080>>
(lldb)
あなたが拡大するセルがであることがわかります可視リスト(配列インデックス1)。では、なぜ私のコードがこれに対してnilを返すのですか?ここではいくつかの余分なコンテキストを与えること
if let indexPath = self.tableView.indexPath(for: expandingCell) {
// NEVER REACHES HERE. Returns nil
} else {
log.warning("This shouldn't happen. The indexPath should be returned by tableView!")
}
、私はその後、細胞「isExpandedとして」にフラグを設定する必要があり、ボタンを押し、に対応しています、そして私は(self.tableView.beginUpdatesを呼び出す)と.endUpdates ()(heightForRow(at:...)の新しい値を提供しています)ので、セルの高さが拡大します。
expandCellをどこに設定しますか? –
通常通り。 cellForRowAtIndexPath:それは意味がありますか? – horseshoe7
beginUpdatesおよびendUpdates内でreloadRowsを使用しましたか? –