2017-07-08 85 views
0

我是新來的Swift,我無法弄清楚如何讓用戶在UIView上添加新的textFields。在Swift中添加新的UITextFields

例如,用戶點擊加號和3個新的textField出現在前一個之後。用戶也可以通過點擊另一個按鈕來刪除它們,這個按鈕出現在新的textFields附近(我發現的唯一的類似系統顯示在標準的Contacts應用程序中,您可以在其中添加新的電話號碼,地址,日期等等)。

也許在「+」符號的內部,我應該以編程方式爲它們添加這些textFields和約束條件,但我仍然無法弄清楚如何去做。 有什麼建議嗎?

+0

你可以通過使用'UIStackView'節省自己添加約束的痛苦。然後,只需添加新的文本字段。 我不知道如何做到這一點,但我會看看。這聽起來很有趣。 – Marmelador

+0

https://stackoverflow.com/questions/1196436/uitextfield-in-uitableviewcell-adding-new-cells –

回答

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,創建一個文本字段,並使用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)或簡單地將count變量設置爲零並使用func reloadData()。可以找到更多的信息herehere