【问题标题】:How to call initWithCoder?如何调用 initWithCoder?
【发布时间】:2013-10-03 10:46:02
【问题描述】:

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

【问题讨论】:

  • 只需从情节提要界面构建器中将您的视图设置为 ViewSubClass。并且 initWithCoder 将在应用午餐时调用并且您访问此视图...
  • 但它没有调用 initWithCoder 方法...
  • 你能把你的界面生成器截图发上来吗
  • 你的代码是initWithCoder:

标签: ios objective-c uiview nscoder


【解决方案1】:

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

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

并在视图类中添加文件名,如下图所示。

【讨论】:

  • 实际上我已经创建了库...ViewSubClass 是我们库的文件。我正在将它用于单个 View 类应用程序...如果我使用库是否有机会那么它不能调用 initWithCoder方法?
  • 如果您按照与上述相同的步骤在 lib 中查看文件或单独执行,它应该每次调用
【解决方案2】:

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

清除 XCode 和模拟器的缓存为我解决了这个问题。

Command + Shift + k 通常对于 XCode 来说已经足够好了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多