SLComposeViewController

SLComposeViewController

我正在尝试创建SLComposeViewController的子类,以使其在我的情况下更易于使用。当我尝试创建required init并调用super.init(forServiceType: SLServiceTypeFacebook)时,出现以下错误:

Must call a designated initializer of the superclass 'SLComposeViewController'

但是,当我检查docs时,没有任何迹象表明存在指定的初始值设定项-因此,我转到其超类UIViewController,指定的初始值设定项为super.init(nibName: String?, bundle: NSBundle?)。但是实现此操作不允许我设置serviceTypeSLComposeViewController,因为它具有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")
    }


}


谢谢!

最佳答案

我可以使用扩展来实现:

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)

关于ios - 子类化SLComposeViewController指定的初始化错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33356210/

10-11 09:25