2017-05-23 136 views
-2

我需要以编程方式创建3个UTextView,而无需使用for循环将每个设置为变量。以编程方式创建3个UITextView

这里是一个演示:

for i in 1...3 { 
    var textView = UITextView() 
    self.automaticallyAdjustsScrollViewInsets = false 

    textView.center = self.view.center 
    textView.textAlignment = NSTextAlignment.justified 
    textView.textColor = UIColor.blue 
    textView.backgroundColor = UIColor.lightGray 

    self.view.addSubview(textView) 
} 

我怎样才能做到这一点,使3组文本的意见,并有控制能力吗?

+1

您需要设置textView的框架,使其具有大小。 – brimstone

+0

*“有能力控制它”*是什么意思? – rmaddy

+0

首先,你是在同一个地方创建textView(self.view.center),其次,如果你想控制textView,你必须为每个都设置专用的textview插座。 – Roy

回答

1

如果您需要从您的课程中的其他方法或者在发布的for循环之后访问生成的文本视图,那么您需要保留对它们的引用。

创建一个数组来保存每一个数组。然后你可以稍后访问数组。如果你只在创建它们的方法中需要这个,那么创建该数组作为另一个局部变量。如果你需要从你的类的其他地方访问文本视图,那么使这个数组适合你的类(视图控制器)。

var textViews = [UITextView]() 

然后在你的循环,补充:

textViews.append(textView) 

后来,当你需要根据需要通过数组或访问单个元素来访问,你可以遍历文本的意见。

+0

谢谢,那是什么寻找 –

0

就像@rmaddy说的,你需要将这些textViews存储在一个数组中。您还需要添加约束到textViews,帮助他们发挥好与自动布局

class MyViewController : UIViewController { 
    var textViews = [UITextView]() 

    func createUI() -> Void { 
     for i in 1...3 { 
      var textView = UITextView() 
      self.automaticallyAdjustsScrollViewInsets = false 

      textView.center = self.view.center 
      textView.textAlignment = NSTextAlignment.justified 
      textView.textColor = UIColor.blue 
      textView.backgroundColor = UIColor.lightGray 

      self.view.addSubview(textView) 

      var vertContraint : NSLayoutConstraint 
      if (i == 1) { 
       vertContraint = NSLayoutConstraint(item: textView, attribute: .top, relatedBy: .equal, toItem: self.topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: 0.0) 
      } else { 
       vertContraint = NSLayoutConstraint(item: textView, attribute: .top, relatedBy: .equal, toItem: textViews[i - 1], attribute: .bottom, multiplier: 1.0, constant: 8.0) 
      } 
      //Do the same for your leading, trailing edges 
      textView.addConstraints([/*vertContraint, leadingContr, trailingContr*/]) 
      textViews.append(textView) 
     }    
    } 
} 
0

一个简单的解决方案将被分配一个标签给UITextView的每一个,然后分别由指定的标签访问它。

这里是指定标签的示范:

for i in 1...5 { 
    var textView = UITextView() 
    self.automaticallyAdjustsScrollViewInsets = false 

    textView.center = self.view.center 
    textView.textAlignment = NSTextAlignment.justified 
    textView.textColor = UIColor.blue 
    textView.backgroundColor = UIColor.lightGray 
    textView.tag = i 
    self.view.addSubview(textView) 
} 

,您可以访问任何分配UITextView()文章标签:

self.view.viewWithTag(1) 
self.view.viewWithTag(2) 
... 

希望它能帮助!

+0

谢谢你,这是我要找的。 –