2016-09-17 94 views
1

所以我的代码看起来像这样,针对每个已知的文本字段并对它们应用相同的修改器。是否可以选择视图中的所有文本字段?

有没有什么办法可以选择视图中的所有文本框?

import UIKit 

class CreateAccount: UIViewController, UITextFieldDelegate, UIScrollViewDelegate { 

    @IBOutlet weak var scrollViewer: UIScrollView! 
    @IBOutlet weak var usernameTextField: UITextField! 
    @IBOutlet weak var emailTextField: UITextField! 
    @IBOutlet weak var passwordTextField: UITextField! 
    @IBOutlet weak var reenterPasswordTextField: UITextField! 

    let textFieldBorderColor: UIColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1.0) 
    let textFieldBorderFocusedColor: UIColor = UIColor(red: 31.0/255.0, green: 111.0/255.0, blue: 217.0/255.0, alpha: 1.0) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 


     usernameTextField.layer.borderColor = textFieldBorderColor.CGColor 
     emailTextField.layer.borderColor = textFieldBorderColor.CGColor 
     passwordTextField.layer.borderColor = textFieldBorderColor.CGColor 
     reenterPasswordTextField.layer.borderColor = textFieldBorderColor.CGColor 

     usernameTextField.layer.borderWidth = 1.0 
     emailTextField.layer.borderWidth = 1.0 
     passwordTextField.layer.borderWidth = 1.0 
     reenterPasswordTextField.layer.borderWidth = 1.0 

     scrollViewer.delegate = self 


    } 
} 

回答

1

您可能需要一个UITextField,然后从这个子类所有的UITextField元素的继承。

然后,您只需要为该子类应用属性/样式。

例如(写在雨燕3.0):

class MyCustomTextField: UITextField { 
    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.layer.borderWidth = 3.0 
     self.layer.borderColor = UIColor.red.cgColor 
    } 
} 

@IBOutlet weak var usernameTextField: MyCustomTextField! 
... 

func viewDidLoad() { 
    // you don't need to apply style properties here anymore 
} 
0

我不知道的方式立即选择所有的文本字段,但如果你正在寻找一种方式,以节省空间,您可以尝试将所有文​​本字段添加到数组,然后循环执行更改。

import UIKit 

class CreateAccount: UIViewController, UITextFieldDelegate, UIScrollViewDelegate { 



@IBOutlet weak var scrollViewer: UIScrollView! 
@IBOutlet weak var usernameTextField: UITextField! 
@IBOutlet weak var emailTextField: UITextField! 
@IBOutlet weak var passwordTextField: UITextField! 
@IBOutlet weak var reenterPasswordTextField: UITextField! 



let textFieldBorderColor: UIColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1.0) 
let textFieldBorderFocusedColor: UIColor = UIColor(red: 31.0/255.0, green: 111.0/255.0, blue: 217.0/255.0, alpha: 1.0) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 

    var textFieldArray = [usernameTextField, emailTextField, passwordTextField, reenterPasswordTextField] 

    for textField in textFieldArray { 

     textField.layer.borderColor = textFieldBorderColor.CGColor 
     textField.layer.borderWidth = 1.0 
    } 



    scrollViewer.delegate = self 


} 

}

0

这将选择一个视图的所有子视图的UITextField:

let textfields = view.subviews.filter({$0.isKindOfClass(UITextField)}) 
0

您可以使用@IBOutlet集合属性应用到多个类似的特性。

您可以连接两次UI元素。

一旦其独特的@IBOutlet连接,一旦到@IBOutlet收集

enter image description here

这表示为[UITextField!]在斯威夫特和在IBOutletCollection(UITextField) Objective-C的

所以......

Swift

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var text1: UITextField! 
    @IBOutlet weak var text2: UITextField! 
    @IBOutlet weak var text3: UITextField! 


    @IBOutlet var allTextFields: [UITextField]! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for field in allTextFields { 
      field.backgroundColor = UIColor.blueColor() 
     } 

    } 
} 

Objective-C的

@interface ViewController() 

@property (weak, nonatomic) IBOutlet UITextField *text1; 
@property (weak, nonatomic) IBOutlet UITextField *text2; 
@property (weak, nonatomic) IBOutlet UITextField *text3; 

@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *allTextFields; 


@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    for (UITextField *field in self.allTextFields) { 
     field.backgroundColor = [UIColor greenColor]; 
    } 
} 


@end 

消除了子类和维护需要手工阵列

,因为你需要您也可以作为通用的定义集合仿佛的UIView束你需要。

@property (strong, nonatomic) IBOutletCollection(UIView) NSArray *allViews;

相关问题