Swift线程1:致命错误:init(编码器:)尚未实现(调用超级解决方案不起作用)

时间:2018-01-10 17:24:51

标签: ios swift xcode custom-component

嘿伙计们我四处搜寻,仍然无法找到问题的解决方案。我在这里有一个自定义课程:

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

}

我的故事板中的UICollectionView控制器的父类。我在这里为它创建了一个控制器类:

template< typename T >
struct CRTP
{
    void do_it( )
    {
        static_cast< T& >( *this ).execute( );
    }
    friend T;
private:
    CRTP() {};
};

问题我得到线程1:致命错误:运行此代码时尚未实现init(编码器:)我已经尝试过解决方案:

C

这不起作用。还有其他建议吗?如果您想亲眼看看,我从cocoapod库中获得了这个框架:

pod'LBTAComponents'

我怀疑这个问题与集合视图和故事板有关,但我无法弄明白。

1 个答案:

答案 0 :(得分:4)

每当ViewController初始化表单Storyboard / XIB时,它都是通过init(coder: )

进行的

您的基类DatasourceController会覆盖初始化程序

public init() {
    super.init(collectionViewLayout: UICollectionViewFlowLayout())
}

required public init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

所以当你在你的HomeController中调用super.init(coder:...)时,它实际上会调用fatalError("init(coder:) has not been implemented")似乎谁写了这个类,不是一个伟大的故事板/ xib爱好者。

您可以删除DatasourceController中的两个初始化工具,但请确保在故事板中设置Flow布局。或者您可以将它们更改为超级电话。

如果无法更改基类,则无法从Storyboard加载VC。