2014-11-04 8 views
20

संक्षेप में, मैं @IBInspectable संपत्ति बनाना चाहता हूं जो आपको स्टोरीबोर्ड में होने पर ड्रॉप डाउन मेनू में चीजों की सूची से चयन करने की अनुमति देता है। इसके अलावा यदि डिवाइडर बनाने और बेहतर तरीके से IBInspectables व्यवस्थित करने का कोई तरीका है, तो मैं जानना चाहूंगा कि यह भी संभव है या नहीं। मेरे उदाहरण में, मैं फोन नंबर के लिए रेगेक्स स्ट्रिंग बनाना चाहता हूं ताकि जब मैं स्टोरीबोर्ड पर जाऊं तो मैं रेगेक्स स्ट्रिंग में प्रवेश करने के बजाय "फोन नंबर" आइटम को ड्रॉप डाउन मेनू में चुन सकता हूं।IBInspectable एक ड्रॉपडाउन और बेहतर संगठन बनाना

वर्तमान में मैंने TextField को उपclassed है ताकि मैं regex (जिसे आप चित्र में देख सकें) जैसे IBInspectables जोड़ सकें। जहाँ तक मुझे पता है, सूची (सरणियों) अभी तक समर्थित नहीं हैं

@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

रूप लोग यहां बाद में आने वाले के लिए, आप, सुधारने/कुछ BOOL गुण है कि उपयोगकर्ता को चालू और बंद टॉगल कर सकते हैं के साथ क्या कर सकता है। यह आदर्श नहीं है लेकिन यह एक विकल्प है। आपके प्रश्न के लिए – hhanesand

+0

@ जोर्डन होचस्टेटर +1 क्या आपको इसके लिए समाधान मिला? – Rakesh

उत्तर

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

: तो के रूप में यह खड़ा है यह है कि क्या मैं अपने subclassed UITextField के लिए है।
suported प्रकार अब तक कर रहे हैं:
Int
CGFloat
Double
String
Bool
CGPoint
CGSize
CGRect
UIColor
UIImage

Also if there is a way to create dividers and better organize the IBInspectables
मुझे नहीं लगता कि ऐसी चीज संभव है। लेकिन शायद किसी के पास एक कामकाज है।

मैं आपको WWDC Session 411 - What's New in Interface Builder देखने की सलाह देता हूं।

6

अभी तक किसी भी सूचियों या सरणी का कोई समर्थन नहीं है।

वर्तमान में निम्न प्रकारों का समर्थन @IBInspectable

  • इंट
  • CGFloat
  • डबल
  • स्ट्रिंग
  • बूल
  • CGPoint
  • CGSize
  • CGRect
  • UIColor
  • UIImage

यहाँ सभी उपलब्ध IBInspectable के साथ एक कोड है:

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

और यह इस तरह आईबी में दिखता है:

enter image description here

+0

[ऐप्पल प्रलेखन] (http://help.apple.com/xcode/mac/8.0/#/devf60c1c514) समर्थित प्रकारों पर: 'आप कक्षा घोषणा, कक्षा विस्तार या श्रेणी में किसी भी संपत्ति में IBInspectable विशेषता जोड़ सकते हैं प्रकार: बुलियन, पूर्णांक या फ़्लोटिंग बिंदु संख्या, स्ट्रिंग, स्थानीयकृत स्ट्रिंग, आयत, बिंदु, आकार, रंग, रेंज, और शून्य। ' –

5

के रूप में संगठन के रूप में, आप इसे विभाजित के साथ व्यवस्थित कर सकते हैं आपकी गुणों का नामकरण करके आरएस ताकि उनके पास एक ही उपसर्ग हो।

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

रेंडर

IB

संबंधित मुद्दे