子类化SLComposeViewController指定的初始化程序错误

时间:2015-10-26 21:46:08

标签: ios swift2

我正在尝试创建SLComposeViewController的子类,以便在我的案例中更容易使用。当我尝试创建required init并致电super.init(forServiceType: SLServiceTypeFacebook)时,我收到以下错误:

Must call a designated initializer of the superclass 'SLComposeViewController'

但是当我检查docs时,没有任何迹象表明存在指定的初始值设定项 - 所以我去了它的超类UIViewController指定的初始值设定项为super.init(nibName: String?, bundle: NSBundle?)。但是,实现这一点不允许我设置serviceType的{​​{1}},因为它是SLComposeViewController属性。

我做错了吗?我不能继承get吗?

这是我的代码:

SLComposeViewController

谢谢!

2 个答案:

答案 0 :(得分:1)

我能够使用扩展程序实现此目的:

enum ShareType {
    case FB, Twitter
}

extension SLComposeViewController {

    convenience init(shareType: ShareType) {

        switch shareType {
        case .FB:
            super.init(forServiceType: SLServiceTypeFacebook)
        case .Twitter:
            super.init(forServiceType: SLServiceTypeTwitter)
        }

    }
}

这样称呼:

let twitterSheet = SLComposeViewController(shareType: .Twitter)

答案 1 :(得分:0)

尝试将super.init()添加到init()。 我知道这似乎很简单,但这就是编译器所抱怨的。我没有使用SLComposeViewController,但我遇到了其他类。