【问题标题】:Adding new UITextFields by users in Swift用户在 Swift 中添加新的 UITextFields
【发布时间】:2017-07-08 15:36:27
【问题描述】:

我是 Swift 新手,我不知道如何让用户在 UIView 上添加新的文本字段。

例如,用户点击加号,3 个新的文本字段出现在之前的文本字段之后。用户还可以通过单击另一个按钮将它们全部删除,该按钮显示在新的文本字段附近(我发现的唯一类似系统出现在标准联系人应用程序中,您可以在其中添加新的电话号码、地址、日期等)。

也许在“+”号内我应该以编程方式为它们添加这些文本字段和约束,但我仍然不知道该怎么做。 有什么建议吗?

【问题讨论】:

  • 您可以使用UIStackView 来省去添加约束的痛苦。然后只需向其中添加新的文本字段。我不知道该怎么做,但我会看看。这听起来很有趣。

标签: ios swift uiview textfield


【解决方案1】:

您可以使用 UIStackView 或 UITableView 来实现此功能。

要创建 UITextField,请使用以下 sn-p。

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. 要删除所有 UITextFields,请使用func removeArrangedSubview(_ view: UIView) 方法。在这里,您需要指定要删除的视图。使用 UIStackView 的arrangedSubviews 属性来获取所有子视图的数组。更多信息可以找到here

使用 UITableView,

您需要将 UITableViewCell 配置为其中包含 UITextField。一旦你有了单元格,只需保留一个变量来记录所有 UITextFields 每次用户点击加号按钮时,使用 func insertRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation) 添加一个 TextField。 不要忘记增加您的计数。更多信息可以找到here。您也可以只增加计数变量并重新加载表格。

要全部删除,您可以使用func deleteRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation) 或简单地将计数变量设置为零并使用func reloadData()。更多信息可以找到herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2011-01-14
    • 1970-01-01
    • 2015-07-01
    相关资源
    最近更新 更多