2016-12-03 3 views
0

Я хотел бы установить различные объекты IBInspectable на основе информации в Интернете, которую я получаю. Например, у меня есть IBInspectables для зеленых, красных и оранжевых кругов. Если запрос говорит зеленый, я хотел бы установить isGreen для проверки Yes, а другие - нет. То же самое касается двух других. Вы можете увидеть IBInspectables here. Я знаю, что могу сделать это с кодом, который я там вложил, но есть ли способ их программным образом переключить?Set IBInspectable программно

+0

Вы можете видеть, чтобы установить @IBInspactable Свойство: https://iosdevcenters.blogspot.com/2017/07/how-to-use-ibinspectable-in-swift-30.html –

ответ

2

Любой IBInspectable, это всего лишь свойство, которое можно увидеть в IB. Так что если у вас есть это:

@IBInspectable var isGreen:Bool? { 
    didSet { 
     // code to color circle? 
    } 
} 

Вы можете сделать это:

self.isGreen = true 
+0

Итак, в моем ViewController я должен добавить @IBInspectable isGreen и в viewWillAppear, что я пишу? –

+0

Где я могу определить, какие из них вызывать, и как их запускать? –

+0

Я неправильно понял ваш вопрос. Вероятно, вы могли бы реорганизовать вещи, поскольку свойства IBInspectable уже имеют знания типа UIColor. [link] http://nshipster.com/ibinspectable-ibdesignable/ показывает хороший пример этого. – dfd

0

Вы кажетесь смущенным. Термин IBInspectable описывает свойство объекта вида, на котором есть тег @IBInspectable. Это говорит Interface Builder, что вы хотите изменить это свойство изнутри Interface Builder.

Помимо возможности редактирования из Interface Builder, свойство IBInspectable не отличается от любого другого свойства.

Если у вас есть класс CircleView, с диаметром собственности:

class FooView: UIView { 
    @IBInspectable var diameter: CGFloat { 
    didSet { 
     //Code to do something with a change to the diameter property 
    } 
} 

И ваш контроллер представления имеет объект FooView в нем с выходом, то вы можете изменить значение вашего пользовательского свойства в коде просто как и любой другой собственности:

class MyViewController: UIViewController { 

    @IBOulet weak var fooView: FooView! 

    @IBAction func buttonTapped(sender: UIButton) { 
    fooView.diameter += 5 
    } 
} 
Смежные вопросы