Swift - 如何创建UITextField数组并将它们添加到UIView

时间:2017-04-21 14:58:33

标签: arrays swift uitextfield

我目前有一个具有三种不同视图(顶部,中间和底部)的控制器。我想在中心区域添加几个小的文本字段/框(有点像他们用于pin代码的那些)。我目前的问题是我需要与我发送到此视图的单词的字符数量一样多的文本字段。

例如:如果单词是“四”,我需要四个文本字段,如果单词是“七”,我需要五个。

我的想法是创建一个textFields数组,遍历单词来计算字符数,然后填充数组。我认为下面的代码至少可以实现,但现在我想使用锚点将这些小文本域添加到centerView。

如何将这些框添加到视图中以便水平显示?

var arrayOfTextFields: [UITextField] = []

var game: Game? {
    didSet {

      if var answerContent = game?.answer {

            for char in answerContent.characters {

                let count = answerContent.characters.count

                for _ in 1...count {
                    let myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 40, height: 60))
                    self.arrayOfTextFields.append(myTextField)

                    answerContent = answerContent.replacingOccurrences(of: "\(char)", with: "_")
                }
            }
      }

   }
}

我的中心视图:

func createCenterView() -> UIView {
    let centerView = UIView()
    centerView.backgroundColor = Constants.MAIN_THEME_COLOR
    centerView.translatesAutoresizingMaskIntoConstraints = false

    return centerView
}

1 个答案:

答案 0 :(得分:1)

创建一个不确定计数的视图数组

在swift中,没有必要使用循环。

let text = "seven"
let views = (0..<text.characters.count).map{ _ in UITextField(frame:.zero) }

水平排列这些视图

使用UIStackView或支持iOS 9的任何其他第三方StackView。

或其他布局系统,如Flexbox(SwiftBox

或使用UICollectionView。