可折叠输入表单 Swift 3
Posted
技术标签:
【中文标题】可折叠输入表单 Swift 3【英文标题】:Collapsible input form Swift 3 【发布时间】:2017-08-21 07:16:12 【问题描述】:我真的很失望,这就是我问这个问题的原因,我在网上找到了 Collapsible TableView 的教程,但它们是用字符串数组或类似的东西填充单元格。
我想用Swift 3
制作这样的手风琴,
几天来,我已经用UITableViewController
尝试了很多东西,因为如果你想要不同的单元格,显然这是唯一可以折叠的东西。
无论如何我都开始这样做了,但正如我所问的my question here 我不能在每个Section
的每个Cell
中显示不同的UI
s。
我确信有办法做到这一点,有人对如何使这项工作有任何建议吗?
我想也许还有其他方法可以做到这一点(例如使用ScrollView
或其他方式)
【问题讨论】:
你试过UIStackView
吗?
@AndréSlotta 不,我没用过,我现在用谷歌搜索一下
@AndréSlotta 我以前确实使用过它们,但我从它们那里知道的唯一用途是将一些 UI 放在一个 UI 中,以便于进行约束。但是它如何帮助我做出上述的事情呢?
您可以将UIButton
作为垂直UIStackView
的第一个元素(展开/折叠一个部分),并在点击时为其余元素设置hidden
属性。
@Abed Naseri 此链接将解决您的问题并让您知道该怎么做 -:appcoda.com/expandable-table-view。这不在 swift3 中,但您绝对可以在堆栈上找到一个,我在堆栈上发布了完整的解决方案 -:***.com/questions/43818004/…
【参考方案1】:
您可以使用UIStackView
来实现它:
-
通过情节提要添加垂直
UIStackView
添加UIButton
作为UIStackView
中的第一个子视图
添加一些UILabel
s 作为UIStackView
中的第二个、第三个...子视图
为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
像这样创建多个UIStackView
s(您始终可以为UIButton
使用相同的IBAction
)并将它们全部嵌入到父(垂直)UIStackView
中,以创建类似于屏幕截图中的视图。
如果有什么不清楚的地方可以随时提问。
结果:
【讨论】:
非常有趣的方式,我真的很喜欢它,因为我不需要经历 TableViews 和单元格的复杂性。十分感谢。只是一个小问题:我有大约 10 个这样的 StackView,最好用什么?滚动视图?如果是的话,如果你知道,你能说一下怎么做吗? 使用UITableView
实际上也很容易。使用 UITableViewController
这有一些不错的优点,例如自动处理键盘。
@AbedNaseri 是的,UIScrollView
是最好的选择。只需将您的外部(父)UIStackView
嵌入到UIScrollView
中并设置特定的约束。以上是关于可折叠输入表单 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章