有没有人设法使用 Swift 创建自定义 UIStoryboard。
如果您跳转到 UIStoryboard 的定义,它只有一个初始化程序。但是它似乎返回一个 UIStoryboard。
init(name: String!, bundle storyboardBundleOrNil: NSBundle!) -> UIStoryboard
虽然初始化器没有返回类型。无论如何,当我尝试从我的子类初始化器调用这个 super 初始化器时,我得到以下错误
必须调用父类(super class)“UIStoryboard”的指定初始化程序
有人成功过吗?这是错误还是我做错了?
最佳答案
使用类(类型)方法实例化 Storyboard。
让 Storyboard:UIStoryboard = UIStoryboard(name: "storyboardName", bundle: nil);
编辑: 你不应该继承 UIStoryboard。此类没有公共(public)指定的初始值设定项。相反,你应该使用类方法来创建你的 Storyboard,因为有很多私有(private)的 Apple API 代码可以从它编译的 *.storyboardc 文件中加载 Storyboard。 Storyboard的实际加载必须通过类方法完成。
子类化无济于事,因为类方法只能保证返回 UIStoryboard,而不是您的特定子类。尝试使用另一种设计模式来实现您的目标。您可以向 UIStoryboard 添加一个类别(Swift 扩展)以添加您想要的任何其他方法,并从您的代码中调用它们。
关于ios - 使用 Swift 自定义 UIStoryboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271131/