ios - 将 x 个元素的 isHidden 设置为 false

标签 ios swift xcode uitextfield

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

因此,用户在文本字段中输入 1 - 5 之间的数字,然后单击提交,调用 createSplit。如您所见,它取消隐藏 View ,然后我希望它循环 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

您最好的选择是使用 socket 集合来定义您所有的日 View 。

而不是这个:

@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
}

请注意,为此,您需要删除现有 socket 并重新连接它们。

如果您使用的是 Storyboard,则当您按住 Control 键从第一个文本字段拖动到类文件时,选择 Outlet Collection 作为连接类型,并将其命名为 dayViews.要将其余文本字段添加到集合中,只需按住 Control 键并将每个文本字段拖动到类文件中的 dayViews var 即可。

关于ios - 将 x 个元素的 isHidden 设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49134422/

相关文章:

c++ - ' fatal error : 'wchar.h' file not found' error with the new macos 11. 3 更新

ios - 重新打开应用程序时,白色 UIStatusbar 会轻微闪烁?

swift - 如何在代码中创建 SceneKit SCNSkinner 对象?

iphone - 条件编译和 Objective-C/Xcode

ios - 更改状态栏样式中间滚动

swift - 调度队列 : Cannot be called with asCopy = NO on non-main thread

ios - Apple 推荐的 Swift 日志记录方法

ios - NSJSONSerialization 在验证应用程序收据时导致 Swift 崩溃

ios - 使用 GIT LFS 跟踪没有文件扩展名的大型二进制文件

ios - 如何提示编译器使用 UIView 子类