[问题] 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