静态函数返回UIView遇到SIGBART错误(SWIFT)

时间:2019-10-11 07:30:38

标签: ios swift

我面临创建类的静态函数的问题

我正在开发一个需要自定义输入视图的应用程序。我的想法是将此函数作为入门,以便需要此自定义输入视图的任何类型的UIKit组件都可以调用此函数

这是我的代码

class Helper { 
    static func getCustomKeyboard() -> CustomInputView {
       let inputView = UINib(nibName: "CustomInputView", bundle: nil).instantiate(withOwner: self, options: nil).first as! CustomInputView
       return inputView
    }
}

当我在另一个UIViewController,UIView或UITableViewCell中调用此函数时,将出现SIGBART错误。

但是,如果我直接从自己的VC或UIView中调用以下代码,则不会出现错误。

let inputView = UINib(nibName: "CustomInputView", bundle: nil).instantiate(withOwner: self, options: nil).first as! CustomInputView

我现在正在做的是创建每个UIKit组件扩展。这样,错误也不会出来。

所以我的问题是,有什么办法可以创建一个仅一个的辅助函数,并且可以在没有SIGBART错误的情况下从任何地方调用它?

谢谢

1 个答案:

答案 0 :(得分:1)

我认为问题可能在于您将所有者的“自我”传递给“实例化”方法。在静态方法中,“自身”是Helper类本身。 尝试将“ nil”作为所有者传递,或者如果您希望使用自定义键盘的组件作为所有者,则将其作为“ getCustomKeyboard”参数传递。