我试图根据用户输入到文本字段中取消隐藏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
}
}
}
答案 0 :(得分:0)
字符串插值不能用于设置变量的名称:
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
}
请注意,要执行此操作,您需要删除现有插座并重新连接。
如果您正在使用情节提要,那么当您从第一个文本字段进行控制拖动到类文件时,请为连接类型选择插座集,并将其命名为{{1} }。要将剩余的文本字段添加到集合中,只需按控制 - 从每个文本字段拖动到类文件中的dayViews
var。