了解如何从IB初始化Custom UIViews

时间:2014-11-29 14:43:09

标签: ios xcode swift uiview interface-builder

我制作了一个自定义的UIView对象customView

我在原型制作过程中使用的主要初始化程序是:

public init(textString: String, frame: CGRect) {

一旦我想将这个小家伙添加到IB我不知道如何让它工作。我知道,一旦我将该函数添加到Interface构建器,它就会调用:

required public init(coder aDecoder: NSCoder)

此时我很遗憾如何将我的自定义textString传递给初始化程序

有没有这样做的过程?

2 个答案:

答案 0 :(得分:2)

您的自定义UIView有两个init方法:

initWithFrame:frame
initWithCoder:aDecoder

您不使用这两种方法来传递textString之类的数据。相反,textString应该是您视图的属性。此属性将通过拥有自定义视图的View Controller进行初始化。

@interface CustomView : UIView

@property (strong, nonatomic) NSString *textString;

@end

然后在View Controller中设置textString属性的值,例如在viewDidLoad方法中。

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet CustomView *myCustomView;

@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
    self.myCustomView.textString = @"There's my textString";
}

@end

希望这可以提供帮助。

答案 1 :(得分:1)

创建自定义视图@IBDesignable,文本属性@IBInspectable,然后您可以在storyboard / xib文件中设置文本。