在x个元素上设置isHidden为false

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在x个元素上设置isHidden为false相关的知识,希望对你有一定的参考价值。

我试图根据用户输入文本字段取消隐藏n个元素。

因此,用户在文本字段中输入1到5之间的数字,然后单击提交调用createSplit的提交。如你所见,它取消隐藏视图,然后我希望它循环x(x是用户输入的数字)取消隐藏day(i)View文本字段的次数

    @IBAction func createSplit(_ sender: Any)
{
    noOfExerciseView.isHidden = false
    let noOfDays: Int = Int(numberOfDays.text!)!
    for i in 1...noOfDays
    {
        day\(i)View.isHidden = false
    }
}

我有一个有效的解决方案,但它不是最有效的,所以我希望有人可以帮助这个有效的方式。

    @IBAction func createSplit(_ sender: Any)
{
    noOfExerciseView.isHidden = false
    let noOfDays: Int = Int(numberOfDays.text!)!
    for i in 1...noOfDays
    {
        if (i==1)
        {
            day1View.isHidden = false
        } else if (i==2)
        {
            day2View.isHidden = false
        } else if (i==3)
        {
            day3View.isHidden = false
        } else if (i==4)
        {
            day4View.isHidden = false
        } else if (i==5)
        {
            day5View.isHidden = false
        }
    }
}
答案

字符串插值不能用于设置变量的名称:

day\(i)View.isHidden // does not work

您最好的选择是使用插座集合来定义您的所有日视图。

而不是这个:

@IBOutlet var day1View: UITextField!
@IBOutlet var day2View: UITextField!
@IBOutlet var day3View: UITextField!
//...

做这个:

@IBOutlet var dayViews: [UITextField]!

然后你可以像这样写你的循环:

for i in 0...noOfDays-1
{
    dayViews[i].isHidden = false
}

请注意,要执行此操作,您需要删除现有插座并重新连接。

如果您正在使用故事板,那么当您从第一个文本字段进行控制 - 拖动到类文件时,请选择“连接类型”的“插座集合”并将其命名为dayViews。要将剩余的文本字段添加到集合中,只需从每个文本字段中按住Ctrl键拖动到类文件中的dayViews var。

以上是关于在x个元素上设置isHidden为false的主要内容,如果未能解决你的问题,请参考以下文章

isHidden 设置为 false 后无法选择隐藏的 textField

应用程序在 isHidden 属性上崩溃

调用UIButton.isHidden = true / false时,视图未更新

应用程序崩溃isHidden属性

为啥 Files.isHidden(Path) 为 Windows 上的目录返回 false?

UIView.animate 没有完美地动画布尔值