我試圖創建一個SLComposeViewController
的子類,使它更容易在我的情況下使用。當我嘗試創建一個required init
並調用super.init(forServiceType: SLServiceTypeFacebook)
我收到以下錯誤:Subclassing SLComposeViewController指定的初始化程序錯誤
Must call a designated initializer of the superclass 'SLComposeViewController'
但是當我檢查docs,沒有什麼表明有一個指定初始化 - 所以我去了它的超UIViewController
指定的初始值爲super.init(nibName: String?, bundle: NSBundle?)
。但是實現這個功能不允許我設置SLComposeViewController
的serviceType
,因爲它的屬性爲get
。
我做錯了什麼?我不能繼承SLComposeViewController
嗎?
這裏是我的代碼:
import Foundation
import UIKit
import Social
enum ShareType {
case FB, Twitter
}
class ShareViewController: SLComposeViewController {
var shareType: ShareType!
required init(shareType: ShareType) {
self.shareType = shareType
switch shareType {
case .FB:
super.init(forServiceType: SLServiceTypeFacebook)
case .Twitter:
super.init(forServiceType: SLServiceTypeTwitter)
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
謝謝!
沒有運氣 - 同樣的錯誤 – uti0mnia
好。如果在此之前沒有人提供解決方案,我將在幾個小時內有時間進行深入研究。 –
好吧,我想我已經完成了所有的打頭和咬牙切齒,我仍然無法弄清楚如何完成你想要的。從編譯器給我的錯誤看來,它似乎認爲'init!(forServiceType serviceType:String!)'是一個方便的初始值設定項。這直接與文檔相矛盾。祝你好運。如果你確實解決了這個問題,請回到這裏。 –