我是Swift的新手,我无法弄清楚如何让用户在UIView上添加新的textFields。
例如,用户点击加号,3个新的textField出现在前一个之后。此外,用户可以通过单击另一个按钮将其全部删除,该按钮出现在新的textFields附近(我发现的唯一的simmilar系统出现在标准的Contacts应用程序中,您可以在其中添加新的电话号码,地址,日期等)。
也许在" +"我应该以编程方式为它们添加这些textFields和约束,但我仍然无法弄清楚如何做到这一点。 有什么建议吗?
答案 0 :(得分:0)
您可以使用UIStackView或UITableView来实现此功能。
要创建UITextField,请使用以下代码段。
let tf = UITextField()
tf.borderStyle = .roundedRect
tf.setContentHuggingPriority(UILayoutPriority(integerLiteral: 750), for: .horizontal)
tf.setContentHuggingPriority(UILayoutPriority(integerLiteral: 750), for: .vertical)
使用StackView,
func insertArrangedSubview(_ view: UIView, at stackIndex: Int)
方法添加它。可以找到更多信息here。func removeArrangedSubview(_ view: UIView)
方法。在这里,您需要指定要删除的视图。使用UIStackView的arrangedSubviews
属性来获取所有子视图的数组。可以找到更多信息here 使用UITableView,
您需要一个UITableViewCell,其中包含一个UITextField。获得单元格后,只需保留一个变量,该变量保留所有UITextField的计数。每次用户点击加按钮时,使用func insertRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation)
添加TextField。 不要忘记增加您的计数。可以找到更多信息here。您也可以只增加计数变量并重新加载表。
要全部删除,您可以使用func deleteRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation)
或只是将count变量设置为零并使用func reloadData()
。可以找到更多信息here和here