是否有人设法使用Swift创建自定义UIStoryboard。

如果跳转到UIStoryboard的定义,则只有一个初始化程序。但是,它似乎返回一个UIStoryboard。

init(name: String!, bundle storyboardBundleOrNil: NSBundle!) -> UIStoryboard

尽管初始化器没有返回类型。无论如何,当我尝试从子类初始化程序调用此 super 初始化程序时,出现以下错误

必须调用 super class “UIStoryboard”的指定初始化程序

有没有人成功做到这一点。这是错误还是我做错了?

最佳答案

使用类(类型)方法实例化情节提要。

让故事板:UIStoryboard = UIStoryboard(name:“storyboardName”,bundle:nil);

编辑:
您不应该继承UIStoryboard。没有用于此类的 public 指定的初始化程序。相反,您应该使用class方法创建情节提要,因为有很多专用的Apple API代码可以从已编译的* .storyboardc文件中加载情节提要。故事板的实际加载必须通过class方法完成。

子类化无济于事,因为只能保证类方法返回UIStoryboard,而不返回您的特定子类。尝试使用另一种设计模式来实现您的目标。您可以向UIStoryboard添加类别(Swift扩展名)以添加所需的任何其他方法,然后从代码中调用这些方法。

10-06 13:11