2014-11-04 7 views
20

Kurz gesagt, ich möchte eine @IBInspectable-Eigenschaft erstellen, mit der Sie aus einer Liste von Dingen in einem Dropdown-Menü auswählen können, wenn Sie in Storyboards sind. Auch wenn es eine Möglichkeit gibt, Teiler zu erstellen und die IBInspectables besser zu organisieren, würde ich gerne wissen, ob das auch möglich ist. In meinem Beispiel möchte ich Regex-Strings für eine Telefonnummer erstellen, sodass ich, wenn ich zum Storyboard gehe, einfach die "Telefonnummer" in einem Dropdown-Menü auswählen kann, anstatt eine Regex-Zeichenfolge einzugeben.IBInspectable Erstellen eines Dropdown-Menüs und bessere Organisation

Zur Zeit habe ich eine TextField subclassed, so dass ich noch mehr IBInspectables hinzufügen kann wie Regex (die Sie auf dem Bild sehen können). So wie es steht das ist, was ich für meinen subclassed 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) 
    } 
} 

Regex Toolbar

+1

Für Menschen hier später kommen, könnte man improvisiert/mit ein paar BOOL Eigenschaften machen zu tun, dass der Benutzer ein- und ausschalten kann. Es ist nicht ideal, aber es ist eine Option. – hhanesand

+0

@Jordan Hochstetler +1 für deine Frage hast du die Lösung dafür? – Rakesh

Antwort

1

I would like to create an @IBInspectable property that allows you to select from a list of things in a drop down menu when you are in Storyboards

Soweit ich weiß, Listen (Arrays) sind noch nicht unterstützt.
suported Typen sind so weit:
Int
CGFloat
Double
String
Bool
CGPoint
CGSize
CGRect
UIColor
UIImage

Also if there is a way to create dividers and better organize the IBInspectables
Ich glaube nicht, dass so etwas möglich ist. Aber vielleicht hat jemand einen Workaround.

Ich empfehle Ihnen zu sehen WWDC Session 411 - What's New in Interface Builder.

6

Es gibt noch keine Unterstützung für Listen oder Arrays.

Derzeit werden folgende Typen unterstützen @IBInspectable

  • Int
  • CGFloat
  • Doppel
  • String
  • Bool
  • CGPoint
  • CGSize
  • CGRect
  • UIColor
  • UIImage

Hier ist ein Code mit allen verfügbaren IBInspectable suchen:

@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")! 

Und es sieht in IB wie folgt aus:

enter image description here

+0

[Apple-Dokumentation] (http://help.apple.com/xcode/mac/8.0/#/devf60c1c514) für unterstützte Typen: 'Sie können das IBInspectable-Attribut zu jeder Eigenschaft in einer Klassendeklaration, einer Klassenerweiterung oder einer Kategorie hinzufügen vom Typ: boolescher Wert, Ganzzahl- oder Gleitkommazahl, String, lokalisierter String, Rechteck, Punkt, Größe, Farbe, Bereich und Null –

5

Wie Soweit Organisation, Sie können es mit Teilen organisieren rs, indem Sie Ihre Eigenschaften so benennen, dass sie das gleiche Präfix haben.

@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! = "" 

Renders als

IB

Verwandte Themen