En bref, je voudrais créer un @IBInspectable
propriété qui vous permet de sélectionner une liste de choses dans un menu déroulant lorsque vous êtes dans les storyboards. De plus, s'il existe un moyen de créer des séparateurs et de mieux organiser le IBInspectables
, je voudrais savoir si cela est également possible. Dans mon exemple, je voudrais créer des chaînes d'expression régulière pour un numéro de téléphone afin que lorsque je vais dans le storyboard, je puisse simplement sélectionner l'élément "numéro de téléphone" dans un menu déroulant au lieu d'entrer une expression régulière chaîne.
Actuellement, j'ai sous-classé un TextField
afin que je puisse ajouter encore plus de IBInspectables
comme regex (que vous pouvez voir dans l'image). Donc, en l'état, voici ce que j'ai pour mon sous-classe UITextField
:
@IBDesignable public class FRM_TextField: UITextField {
@IBInspectable public var regex : String?
public var isValid : Bool{
if let unwrappedRegex = regex{
let applied_regex_expression = NSRegularExpression.regularExpressionWithPattern(unwrappedRegex, options: nil, error: nil)
let numberOfMatches = applied_regex_expression?.numberOfMatchesInString(text, options: nil, range: NSMakeRange(0, countElements(text)))
if(numberOfMatches > 0 ){
return true
}else{
return false
}
}
return false
}
public required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
public override init(){
super.init();
}
public override init(frame: CGRect) {
super.init(frame: frame)
}
}
Il n'y a pas encore de support de listes ou de tableaux.
Actuellement, les types suivants prennent en charge @IBInspectable
Voici un code avec tous les IBInspectable disponibles:
@IBInspectable var integer: NSInteger = 10
@IBInspectable var float: CGFloat = 10
@IBInspectable var double: Double = 10
@IBInspectable var string: String = "string"
@IBInspectable var bool: Bool = true
@IBInspectable var point: CGPoint = CGPointMake(1, 0)
@IBInspectable var rect: CGRect = CGRectMake(0, 0, 100, 100)
@IBInspectable var color: UIColor = UIColor.redColor()
@IBInspectable var size: CGSize = CGSizeMake(100, 100)
@IBInspectable var image: UIImage = UIImage(named: "Logo")!
Et cela ressemble à IB comme ceci:
En ce qui concerne l'organisation, vous pouvez l'organiser avec des séparateurs en nommant vos propriétés afin qu'elles aient le même préfixe.
@IBInspectable var ValText : Bool! = false
@IBInspectable var ValEmail : Bool! = false
@IBInspectable var ValCreditCard : Bool! = false
@IBInspectable var Positives : Bool! = false
@IBInspectable var Money : Bool! = false
@IBInspectable var Phone : Bool! = false
@IBInspectable var ZipCode : Bool! = false
@IBInspectable var Street : Bool! = false
@IBInspectable var IPAddress : Bool! = false
@IBInspectable var MAC : Bool! = false
@IBInspectable var AlphaNum : Bool! = false
@IBInspectable var AlphaNumSpaces : Bool! = false
@IBInspectable var AlphaNumNoSpaces : Bool! = false
@IBInspectable var URL : Bool! = false
@IBInspectable var ValidationType : String! = ""
Rend comme
Je voudrais créer un
@IBInspectable
propriété qui vous permet de sélectionner une liste de choses dans un menu déroulant lorsque vous êtes dans les storyboards.
Pour autant que je sache, les listes (tableaux) ne sont pas encore prises en charge. Les types pris en charge jusqu'à présent sont:
Int
CGFloat
Double
String
Bool
CGPoint
CGSize
CGRect
UIColor
UIImage
Aussi s'il existe un moyen de créer des séparateurs et de mieux organiser les IBInspectables.
Je ne pense pas qu'une telle chose soit possible. Mais peut-être que quelqu'un a une solution de contournement.
Je vous recommande de regarder WWDC Session 411 - Quoi de neuf dans Interface Builder .