-
Notifications
You must be signed in to change notification settings - Fork 298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TangramPageScrollLayout中的element重复添加问题 #39
Comments
收到,会进行验证 |
补充一下,是在一个页面中有两个及两个以上的轮播布局卡片,才会出现这种情况,如果只有一个轮播布局的卡片是没问题的。 |
已重现此问题,在排查中 |
和之前的研发沟通了一下,目前此 Layout 基本属于废弃状态。 最早的时候这个 Layout 是用来实现 Banner 的,所以要维持内部元素永驻内存(为了维持它滚出页面时的滚动 offset 状态),避免被重用导致各种问题。所以 pageScrollLayout 在添加元素时强制将内部元素的 reuseIdentifer 全部清空了,并且从来没有测试过 reloadLayout 之类的可能。 目前来看逻辑已经难以维护,有点接近上帝才知道的状态了……所以综合来说现在的建议:
|
可以尝试修复方案,注释掉我所注释的对应行:
注:并未经过充分测试 |
收到,谢谢。 |
是的,element + oneColumn。 主要是这种 Layout 在需求上存在设计难点(而不是实现难点):
比较难取舍。 |
自己实现的element+oneColumn形式 ,现在一个页面有几个滚动布局的话,会出现数据混乱的现象,不知道是什么原因? |
@yoowei oneColumn应该不会出现类似情况,你可以另开一个问题说得更清楚点 |
卡片内的组件数据源如果有变化,我通过
[TangramDefaultDataSourceHelper modelsWithLayoutDictionary:newLayoutDict]
生成了新的itemsModel,然后[pageScrollLayoutView setItemModels:itemsModel]
后,执行[TangramView reloadlayout:pageScrollLayoutView]
,pageScrollLayoutView
中原来的element不会被删除,也就是说会一直添加新的element,而且如果新的itemsModel.count = 0
的话,在TangramPageScrollLayout
的方法calculateLayout
中直接执行了把这个layoutView的高度赋成了0,但是以前的子试图还是存在的,导致以前的子试图还是会显示的。
所以这里两个现象:
1.在没有重新生成layoutView的情况下,局部更新该layoutView的组件数据源,刷新后,老得组件没有被删除,导致重复添加组件。
2.在没有重新生成layoutView的情况下,局部更新该layoutView的组件数据源且新的组件个数为0,这个layoutView高度为0,但是老得组件还是会显示出来。
这两个现象都是同一个问题造成的,就是更新itemsModel后,应该删除老的组件视图。
麻烦你这边验证一下。
The text was updated successfully, but these errors were encountered: