首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPopoverBackgroundView contentViewInsets必须由子类实现。

UIPopoverBackgroundView contentViewInsets必须由子类实现。
EN

Stack Overflow用户
提问于 2015-04-05 16:46:13
回答 1查看 3K关注 0票数 8

我正在实现一个自定义PopoverBackgroundView,并且按照在Swift文档中指定的那样,我必须实现以下方法:

代码语言:javascript
复制
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必须由子类实现。

对于这个子类从这里可以看到,苹果似乎有一些混乱的异常,因为我确实实现了contentViewInsets,但仍然会出现错误。

以下是如何将背景类设置为prepareForSegue方法中的弹出程序:

代码语言:javascript
复制
popover.popoverBackgroundViewClass = SettingsPopoverBackgroundView.self

是对的吗?

有人能看到我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-05 20:20:43

contentViewInsets()arrowBase()arrowHeight()都是类函数,因此需要在func前面“覆盖类”。

对于arrowOffsetarrowDirection,文档说您的方法不能调用超级。我不确定您需要在这些设置器中添加什么(这取决于您想要做什么),但是如果您将其保留为空白,则应用程序运行时应该没有错误(尽管您不会看到箭头)。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29459668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档