UIScallView中的UITableView加载所有单元格



我目前有一个视图uisegmentedcontrol和另一个视图,它们都在滚动视图中。最后一个视图根据uisegmentedcontrol中选定的索引在两个uitableview之间交换。为了使所有元素滚动在一起,我使uitableview的高度与内容大小相同。然而,当我这样做时,所有的单元格都会被加载,因为它们在滚动视图中是"可见的",即使它们在屏幕上不可见。如果行数较大,则会锁定屏幕,并且在某些手机上加载速度较慢。有办法解决这个问题吗?有没有办法让tableview只调用tableview:cellForRowAtIndexPath:,当它在屏幕上实际可见而不是在滚动视图中可见时?

我知道使用headerView和footerView是一种选择,但这变得有点奇怪,因为两个表视图的顶部视图和uisegementedcontrol应该相同。我还有其他屏幕,在那里我有两个uitableview(上面和下面都有兄弟视图)在一个uiscrollview中,我需要所有的东西来滚动

编辑:这是带有两个UITableViews的屏幕中的屏幕布局。所有内容都将包含在一个滚动视图中:

|-------------------------------|
|UIView(包含页面标题)|
|------------------------------|
|UITableView
||
||

|
>|UIButton
|
-------------------------------
||
| UITableView
||
|

||
|
||
|

根据我的个人经验,没有办法满足你的要求。出于上述原因,苹果不建议在滚动视图中嵌入表视图。

什么是可见的或被视为可见的是基于内容大小与可见矩形/内容偏移量。UITableView继承自具有动态contentOffset属性的UIScrollView。此contentOffSet属性在表视图上下滚动时发生更改,用于确定要加载的单元格。如果contentOffset与表大小相同,则它认为整个表是可见的,并将同时加载所有单元格。

如果要切换UITableView,请从该UITableView中删除页眉和页脚视图,并将它们添加到要显示的另一个视图中。这样你就不会有重复的俯视图和分段控制的问题。

至于你想让两个表视图滚动在一起的另一个问题,最好看看你想要的样子的模型,但我认为实现这一点的最好方法是使用一个表视图,其中你有一个自定义单元格,你设计它看起来像一分为二。然后当你滚动时,它看起来就像两个表视图一起滚动。

编辑:

根据你对问题的补充,我仍然认为它应该只是一个UITableView。顶部的UIView可能应该是UITableView的标题(但如果您希望它始终可见,则不必是),并且标记为表视图的两个部分应该分别是一个表视图的一部分。UIButton可以包含在中间一节的单元格中,也可以是第二节的页眉(或顶部的页脚)。我可能会选择把它作为一个单独的牢房。这样,您的表视图将有三个部分,一个用于顶部表内容,另一个用于按钮,还有一个用于底部表内容。

最新更新