我有这个类方法,我在我的视图控制器中调用此方法
class func initWithNewFrame(var frame : CGRect?)
{
if let newFrame = frame
{
var backgroundView : BackgroundView = BackgroundView(frame: newFrame)
}
}
我叫
var frameNew : CGRect = CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
self.view.frame.size.width,
self.view.frame.size.height)
self.gradientView = BackgroundView.initWithNewFrame(frameNew)
而且我得到此错误“ 0”不能迅速转换为BackgroundView
,
请解决此问题,并在此先感谢。
最佳答案
原因:
错误来自这里:self.gradientView = BackgroundView.initWithNewFrame(frameNew)
您为self.gradientView
分配了返回值initWithNewFrame
,但是在您的代码中,initWithNewFrame
没有返回值。
在Swift中,没有返回值意味着返回一个空的元组。因此,您收到““ 0”不可转换为BackgroundView”错误,因为您要为BackgroundView
分配一个空元组。
也许这是您期望的方法:
class func initWithNewFrame(var frame : CGRect?) -> BackgroundView?
{
var backgroundView : BackgroundView? = nil
if let newFrame = frame
{
backgroundView = BackgroundView(frame: newFrame)
}
return backgroundView
}
更新:
如果要为类
BackgroundView
创建自定义初始化程序,请尝试以下操作:convenience init(var frame : CGRect?) {
if let newFrame = frame
{
self.init(newFrame )
}
// Do custom thing
}
关于swift - 不能立即将“0”转换为BackgroundView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30045121/