【问题标题】:Collapsible input form Swift 3可折叠输入表单 Swift 3
【发布时间】:2017-08-21 07:16:12
【问题描述】:

我真的很失望,这就是我问这个问题的原因,我在网上找到了 Collapsible TableView 的教程,但它们是用字符串数组或类似的东西填充单元格。

我想用Swift 3 制作这样的手风琴,

几天来,我已经用UITableViewController 尝试了很多东西,因为如果你想要不同的单元格,显然这是唯一可以折叠的东西。

无论如何我都开始这样做了,但正如我所问的my question here 我不能在每个Section 的每个Cell 中显示不同的UIs。

我确信有办法做到这一点,有人对如何使这项工作有任何建议吗?

我想也许还有其他方法可以做到这一点(例如使用ScrollView 或其他方式)

【问题讨论】:

  • 你试过UIStackView吗?
  • @AndréSlotta 不,我没用过,我现在用谷歌搜索一下
  • @AndréSlotta 我以前确实使用过它们,但我从它们那里知道的唯一用途是将一些 UI 放在一个 UI 中,以便于进行约束。但是它如何帮助我做出上述的事情呢?
  • 您可以将UIButton 作为垂直UIStackView 的第一个元素(展开/折叠一个部分),并在点击时为其余元素设置hidden 属性。
  • @Abed Naseri 此链接将解决您的问题并让您知道该怎么做 -:appcoda.com/expandable-table-view。这不在 swift3 中,但您绝对可以在堆栈上找到一个,我在堆栈上发布了完整的解决方案 -:stackoverflow.com/questions/43818004/…

标签: ios swift swift3


【解决方案1】:

您可以使用UIStackView 来实现它:

  1. 通过情节提要添加垂直UIStackView
  2. 添加UIButton 作为UIStackView 中的第一个子视图
  3. 添加一些UILabels 作为UIStackView 中的第二个、第三个...子视图
  4. UIButton(第一个子视图)添加一个IBAction

像这样实现IBAction

@IBAction func sectionHeaderTapped(sender: UIButton) {
    guard let stackView = sender.superview as? UIStackView else { return }
    guard stackView.arrangedSubviews.count > 1 else { return }
    let sectionIsCollapsed = stackView.arrangedSubviews[1].hidden

    UIView.animateWithDuration(0.25) { 
        for i in 1..<stackView.arrangedSubviews.count {
            stackView.arrangedSubviews[i].hidden = !sectionIsCollapsed
        }
    }
}

像这样创建多个UIStackViews(您始终可以为UIButton 使用相同的IBAction)并将它们全部嵌入到父(垂直)UIStackView 中,以创建类似于屏幕截图中的视图。

如果有什么不清楚的地方可以随时提问。

结果:

【讨论】:

  • 非常有趣的方式,我真的很喜欢它,因为我不需要经历 TableViews 和单元格的复杂性。十分感谢。只是一个小问题:我有大约 10 个这样的 StackView,最好用什么?滚动视图?如果是的话,如果你知道,你能说一下怎么做吗?
  • 使用UITableView 实际上也很容易。使用 UITableViewController 这有一些不错的优点,例如自动处理键盘。
  • @AbedNaseri 是的,UIScrollView 是最好的选择。只需将您的外部(父)UIStackView 嵌入到UIScrollView 中并设置特定的约束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2015-01-18
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
相关资源
最近更新 更多