IBInspectable Создание раскрывающегося списка и лучшей организации
Короче говоря, я хотел бы создать свойство @IBInspectable
, которое позволяет вам выбирать из списка вещей в выпадающем меню, когда вы находитесь в Раскадке. Также, если есть способ создать разделители и лучше организовать IBInspectables
, я хотел бы знать, возможно ли это также. В моем примере я хотел бы создать строки регулярных выражений для номера телефона, чтобы при переходе на раскадровку я мог просто выбрать пункт номер телефона "в выпадающем меню вместо ввода регулярного выражения строка.
В настоящее время я подклассифицировал a TextField
, чтобы добавить в него еще больше IBInspectables
, как regex (что вы можете видеть на картинке). Итак, так оно и есть, это то, что у меня есть для моего подкласса 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
Что касается организации, Вы можете организовать ее с помощью разделителей, назвав свои свойства так, чтобы они имели одинаковый префикс.
@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]()
Ответ 2
Пока нет поддержки каких-либо списков или массивов.
В настоящее время поддерживаются следующие типы @IBInspectable
- Int
- CGFloat
- Дважды
- Строка
- Bool
- 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")!
И он выглядит в IB следующим образом:
![enter image description here]()
Ответ 3
Я хотел бы создать свойство @IBInspectable
которое позволяет вам выбирать из списка вещей в выпадающем меню, когда вы находитесь в раскадровке.
Насколько я знаю, списки (массивы) пока не поддерживаются. Поддерживаемые типы:
-
Int
-
CGFloat
-
Double
-
String
-
Bool
-
CGPoint
-
CGSize
-
CGRect
-
UIColor
-
UIImage
Также, если есть способ создать разделители и лучше организовать IBInspectables.
Я не думаю, что такое возможно. Но, возможно, у кого-то есть обходной путь.
Я рекомендую вам посмотреть сессию WWDC 411. Что нового в Интерфейсном Разработчике.