切换到单个视图控制器,该控制器将根据在表视图控制器中选择的索引显示一定数量的 UITextFields



在我当前的应用程序中,我有一个UITableViewController,它允许我根据所选的行切换到三个不同的索引。如果我选择第一行,我会转到具有三个 UITextField 的视图控制器。如果我选择第二行,我会转到一个带有一个 UITextField 的新视图控制器。如果我选择第三行,我会转到另一个具有五个 UITextFields 的新视图控制器。我正在寻找一种方法,将我要使用的视图控制器压缩到一个视图控制器中,该视图控制器将根据表视图控制器中选择的索引动态隐藏/取消隐藏或删除/添加所需数量的 UITextFields。我需要文本字段显示在垂直堆栈视图中。

虽然这将非常有价值,但我不是在寻找某人的解决方案/示例,而是让我知道我可以研究的一些主题将非常有帮助。

谢谢你的时间,

托尼

此问题可能有不同的方法,但我会在 NEW 视图控制器中创建一个嵌入最大可能数量的textFieldsstackView。假设具有大多数文本字段的 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
        }
    }

相关内容

  • 没有找到相关文章

最新更新