【问题标题】:Table views inside a scroll view滚动视图中的表格视图
【发布时间】:2017-05-04 11:21:54
【问题描述】:

我的 Swift 应用程序出现此点击问题。我正在构建一个配置文件屏幕,其中包含 2 个 UITableViews 在 UIScrollView 内。但是,只有 1 个UITableCell 是可点击的(两个表必须分开的原因是因为顶部表按 ASC 排序 - 从最新到未来日期,而底部表按 DESC 排序 - 从最近到最旧) .

表格会根据以下代码中显示的内容自动拉伸。问题是只有第一个项目是可点击的。

使用 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

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

【问题讨论】:

  • 为什么不为所有内容使用一个UITableView
  • ^确切地说,使用一个表格视图,在一个数组中使用您认为合适的所有排序逻辑。半 desc 和 asc 部分可以通过将数组分成两部分并排序然后连接或使用键对其进行排序来管理。但是一旦您管理了 DS,您的工作就会变得非常轻松
  • 之所以要分开两张表是因为上表按ASC排序——从最新到未来日期,而下表按DESC排序——从最近到最旧
  • 您只能使用一个,但要与 Sections 一起使用!
  • @MagoNicolasPalacios 每个表已经有部分。 =D

标签: ios iphone swift uitableview uiscrollview


【解决方案1】:

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

  1. 两个单独的数组用于您希望按降序排列的数据和一个用于升序排列的数据。
  2. 在两个部分中填充您的表格视图。如果第 0 部分用于升序项目,则使用升序数据/数组加载该部分中的行/单元格数据,然后使用降序数据/数组对第 1 部分执行相同操作。这可以通过节和单元格的数据源方法实现中的条件语句轻松实现。
  3. 如果您认为您仍然必须在每个已按部分分隔的单元格上实现部分,那么您可以创建一个自定义单元格来充当类似部分的布局。您不仅限于创建自定义单元格,只需小心处理即可。
  4. 如果这种简单的方法还不够,那么您可以使用更高级的实现,使用集合视图,根据您的问题,这已经是另一个主题了。

当前设计的主要问题(在滚动视图中使用 2 个表视图)很可能会导致数据加载效率低下,因为您需要加载两个表上的所有数据只是为了确定滚动视图的内容高度.除了手势需要额外的路由之外,您当前的设计将限制您的应用仅延迟加载当前需要显示的单元格/数据的能力。

【讨论】:

  • 感谢@Axel 的回复。我同意你的回答。 =D
猜你喜欢
  • 1970-01-01
  • 2013-12-30
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多