我正在尝试创建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
谢谢!
答案 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
,但我遇到了其他类。