如何调用initWithCoder?

时间:2013-10-03 10:46:02

标签: ios objective-c uiview nscoder

我有UIViewControllerUIView子类(比方说ViewSubClass)。我正在使用故事板。在mainStoryBoard.storyBord中,我添加了一个UIView并设置了自定义类ViewSubClass。现在,我不想在ViewSubClass UIViewController中创建ViewSubClass *subClassInstance = [[ViewSubClass alloc] init]的实例。如果不在ViewSubClass中创建ViewController的任何实例,我想调用initWithCoder方法。运行我的应用程序时,应调用initWithCoder ViewSubClass方法。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

在视图类.m文件中添加以下代码

-(id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
    // Initialization code
}
return self;
}

在视图类中添加文件名,如下面的屏幕截图所示。

enter image description here

答案 1 :(得分:1)

偶尔,我已经看到initWithCoder:没有被调用,即使我在Interface Builder中设置了子类视图,如接受的答案中所示。

吹走XCode和模拟器的缓存解决了我的问题。

Command + Shift + k通常足以支持XCode。

为iOS模拟器选择“重置内容和设置”:

iOS Simulator