在Swift中由用户添加新的UITextField

时间:2017-07-08 15:36:27

标签: ios swift uiview textfield

我是Swift的新手,我无法弄清楚如何让用户在UIView上添加新的textFields。

例如,用户点击加号,3个新的textField出现在前一个之后。此外,用户可以通过单击另一个按钮将其全部删除,该按钮出现在新的textFields附近(我发现的唯一的simmilar系统出现在标准的Contacts应用程序中,您可以在其中添加新的电话号码,地址,日期等)。

也许在" +"我应该以编程方式为它们添加这些textFields和约束,但我仍然无法弄清楚如何做到这一点。 有什么建议吗?

1 个答案:

答案 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,

  1. 要添加UITextField,请创建一个TextField并使用func insertArrangedSubview(_ view: UIView, at stackIndex: Int)方法添加它。可以找到更多信息here
  2. 要删除所有UITextField,请使用func removeArrangedSubview(_ view: UIView)方法。在这里,您需要指定要删除的视图。使用UIStackView的arrangedSubviews属性来获取所有子视图的数组。可以找到更多信息here
  3. 使用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()。可以找到更多信息herehere