UIPopoverBackgroundView contentViewInsets 必须由子类实现
UIPopoverBackgroundView contentViewInsets must be implemented by subclassers
我正在实现自定义 PopoverBackgroundView,并且按照 Swift documentation 中的规定,我必须实现如下方法:
class SettingsPopoverBackgroundView: UIPopoverBackgroundView {
override var arrowOffset: CGFloat {
get {
return 0.0
}
set {
super.arrowOffset = newValue
}
}
override var arrowDirection: UIPopoverArrowDirection {
get {
return UIPopoverArrowDirection.Up
}
set {
super.arrowDirection = newValue
}
}
func contentViewInsets() -> UIEdgeInsets {
return UIEdgeInsetsMake(10, 10, 10, 10)
}
func arrowBase() -> CGFloat {
return 2.0
}
func arrowHeight() -> CGFloat {
return 2.0
}
}
但是,我仍然收到错误消息:
UIPopoverBackgroundView contentViewInsets must be implemented by
subclassers.
对于这个子 classing,Apple 似乎有一些乱码异常,as can be seen here,因为我确实实现了 contentViewInsets,但仍然出现错误。
这就是我在 prepareForSegue 方法中将背景 class 设置为弹出窗口的方式:
popover.popoverBackgroundViewClass = SettingsPopoverBackgroundView.self
对吗?
谁能看出我做错了什么?
contentViewInsets()
、arrowBase()
、arrowHeight()
都是class函数,所以需要在func
前面加上"override class" .
对于 arrowOffset
和 arrowDirection
,文档说 你的方法不能调用 super。我不确定你到底需要在这些设置器中放入什么(这取决于你想做什么),但如果你将它们留空,应用程序应该 运行 没有错误(虽然你不会'看不到箭头)。
我正在实现自定义 PopoverBackgroundView,并且按照 Swift documentation 中的规定,我必须实现如下方法:
class SettingsPopoverBackgroundView: UIPopoverBackgroundView {
override var arrowOffset: CGFloat {
get {
return 0.0
}
set {
super.arrowOffset = newValue
}
}
override var arrowDirection: UIPopoverArrowDirection {
get {
return UIPopoverArrowDirection.Up
}
set {
super.arrowDirection = newValue
}
}
func contentViewInsets() -> UIEdgeInsets {
return UIEdgeInsetsMake(10, 10, 10, 10)
}
func arrowBase() -> CGFloat {
return 2.0
}
func arrowHeight() -> CGFloat {
return 2.0
}
}
但是,我仍然收到错误消息:
UIPopoverBackgroundView contentViewInsets must be implemented by subclassers.
对于这个子 classing,Apple 似乎有一些乱码异常,as can be seen here,因为我确实实现了 contentViewInsets,但仍然出现错误。
这就是我在 prepareForSegue 方法中将背景 class 设置为弹出窗口的方式:
popover.popoverBackgroundViewClass = SettingsPopoverBackgroundView.self
对吗?
谁能看出我做错了什么?
contentViewInsets()
、arrowBase()
、arrowHeight()
都是class函数,所以需要在func
前面加上"override class" .
对于 arrowOffset
和 arrowDirection
,文档说 你的方法不能调用 super。我不确定你到底需要在这些设置器中放入什么(这取决于你想做什么),但如果你将它们留空,应用程序应该 运行 没有错误(虽然你不会'看不到箭头)。