在我当前的应用程序中,我有一个UITableViewController,它允许我根据所选的行切换到三个不同的索引。如果我选择第一行,我会转到具有三个 UITextField 的视图控制器。如果我选择第二行,我会转到一个带有一个 UITextField 的新视图控制器。如果我选择第三行,我会转到另一个具有五个 UITextFields 的新视图控制器。我正在寻找一种方法,将我要使用的视图控制器压缩到一个视图控制器中,该视图控制器将根据表视图控制器中选择的索引动态隐藏/取消隐藏或删除/添加所需数量的 UITextFields。我需要文本字段显示在垂直堆栈视图中。
虽然这将非常有价值,但我不是在寻找某人的解决方案/示例,而是让我知道我可以研究的一些主题将非常有帮助。
谢谢你的时间,
托尼
此问题可能有不同的方法,但我会在 NEW 视图控制器中创建一个嵌入最大可能数量的textFields
的stackView
。假设具有大多数文本字段的 VC 可以包含 3 个文本字段。创建包含 3 个textFields
的堆栈视图。
然后将 tableView 的 indexPath.row 转移到 NEW VC,它可以保存一个 Integer 的变量,如下所示:
var index: Int?
在表视图didSelectRowAt
方法中:
performSegue(withIdentifier: "yourIdentifier", sender: indexPath.row)
在prepareForSegue
方法中:
if segue.identifier == "yourIdentifier"
let vc = segue.destination as! NEWViewController
vc.index = sender
在新的视图控制器中将标签设置为文本字段,以便您可以知道要根据索引删除的文本字段。然后在 newViewController 的 viewDidLoad 中,您可以根据索引从堆栈视图中删除文本字段(然后您可能会遇到):
var counter = 0
while counter < index {
answerStackView.subviews.forEach { (view) in
if counter < index {
if view is UITextField {
if view.tag == /*something here to delete specific textFields depending on index. */ {
view.removeFromSuperview()
}
}
}
counter += 1
}
}