[問題] expand tableview後layout亂跑

作者: yavis (yavis)   2019-02-26 01:36:56
各位前輩好, 雖然在其他群組發問過, 但依然無法解決,
如果有重複看到此篇文章的話先說聲抱歉,
最近遇到一個expand tableview問題,
點擊某個header後展開後,
往下滑在點擊其他header, 畫面會亂跑, (如下面連結影片所示
https://drive.google.com/open?id=1yawWV1GfZQ32dT1hVIYFWPaIXAcre-ct
網路上的解法有試過設定
estimatedrowheight,
estimatedheaderheight,
estimatedfooterheight = 0,
與點擊header時reload採用
reload row, reload section,
UIView.performWithoutAnimation { tableview.reloadData() }
都沒辦法解決,
想請教板上前輩是否有好的解決方案,
或是我遺漏了什麼步驟, 謝謝
(最後補上sample src code,
https://drive.google.com/open?id=1SD6OtC-i3P3Zxc1Dpn81Ncvm7sF0r-Ce
這是我另外寫的sample code,
裡頭邏輯跟結構跟影片上的專案一模一樣)
作者: darktt (小朱)   2019-02-26 07:35:00
你確定sample code能重現你的問題嗎?我看你的影片很像有收回已經展開的cell,但是sample code並沒有這回是,而且sample code看起來是沒問題的
作者: yavis (yavis)   2019-02-26 16:59:00
sample沒辦法重現, 且很正常的運作, 但不知道為什麼專案上使用了custom cell就換發生此問題另外這影片沒有使用到收回展開的場景, 可以排除此問題
作者: liyata (liyata)   2019-02-27 10:43:00
看不出哪裡亂跑 冏
作者: egg5233 (egg)   2019-02-27 13:45:00
手機看不到sample code. Tableview在reload data時會重算整體的高度 . Estimate height不對的話會讓current scroll position算不準.在開發聊天室的時候有遇過相似的問題.滑倒一半如果tableview因故要reload,則estimated height for row或header必須要是很精確的數字.否則reload完後的position會跑掉你這個看起來是不會太麻煩因為高度是固定的...不像聊天的話可能每一個cell都不一樣
作者: yavis (yavis)   2019-02-27 14:16:00
感謝egg大回覆,但我在height for row 已寫定Return uitableviewautomaticdimension了,這樣該如何給定estimated height呢
作者: egg5233 (egg)   2019-03-02 11:35:00
就是得自己算那個cell最後長出來的高度囉如果是uilabel的話可以參考https://reurl.cc/Xm69a

Links booklink

Contact Us: admin [ a t ] ucptt.com