滚动视图内的表视图

时间:2016-12-19 11:55:19

标签: ios iphone swift uitableview uiscrollview

我在Swift应用上遇到此点击问题。我在UITableView内构建了一个包含2 UIScrollView个个人资料的个人资料屏幕。但是,只有一个UITableCell是可点击的(两个表之间必须分开的原因是因为顶层表是ASC排序的 - 从最新日期到未来日期,而底层表是DESC排序 - 从最近的表到最旧的)。

enter image description here

表格根据内容自动拉伸,如下面的代码所示。问题是只有第一个项目是可点击的。

在1 UITableView的其他屏幕中一切正常。我还确保使用UI调试器在表的前面没有视图。

// Table 1
// UITableViewDelegate, UITableViewDataSource
managerUpcoming.getTable().reloadData()
// Height Constraint
heightUpcoming.constant = managerUpcoming.getTable().contentSize.height
// Resize table
managerUpcoming.getTable().frame.size.height = heightUpcoming.constant
// Update
managerPrevious.getTable().updateConstraints()

// Table 2
// UITableViewDelegate, UITableViewDataSource
managerPrevious.getTable().reloadData()
// Height Constraint
heightPrevious.constant = managerPrevious.getTable().contentSize.height
// Resize table
managerPrevious.getTable().frame.size.height = heightPrevious.constant
// Update
managerPrevious.getTable().updateConstraints()

viewContent.frame.size.height = total
scroll.contentSize.height = viewContent.frame.height

enter image description here

非常感谢任何帮助和建议。感谢。

1 个答案:

答案 0 :(得分:2)

在滚动视图中有两个表视图是一个糟糕的设计IMO。即使进入Android开发领域的另一端,也会建议你不要这样做。根据您提供的关于如何放置两个表格视图的图片,可能还有以下内容:

  1. 两个分开的数组,表示您希望下降的数据和一个用于提升的数据。
  2. 将表格视图分为两部分。如果第0部分用于升序项目,则使用升序数据/数组加载该部分中的行/单元格数据,然后使用降序数据/数组对第1部分执行相同操作。这可以通过部分和单元格的数据源方法实现中的条件语句轻松实现。
  3. 如果您认为仍然需要在每个已经按部分分隔的单元格上实现部分,那么无论如何都可以创建一个自定义单元格作为类似于部分的布局。您不仅限于创建自定义单元格,只需谨慎处理它们。
  4. 如果这个简单的方法不够,那么您可以使用集合视图使用更高级的实现,并且根据您的问题已经是一个不同的主题。
  5. 您当前设计的主要问题(在滚动视图中使用2个tableviews)很可能会导致数据加载效率低下,因为您需要加载两个表上的所有数据,以确定滚动视图的内容高度。除了手势需要额外路由这一事实外,您当前的设计将限制应用程序懒惰加载此刻需要显示的单元格/数据的能力。