gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:31:58 25 4
gpt4 key购买 nike

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

必须调用父类(super class)“SLComposeViewController”的指定初始化程序

但是当我检查 docs ,没有任何迹象表明有一个指定的初始化器 - 所以我去了它的父类(super class),UIViewController 指定的初始化器是 super.init(nibName: String?, bundle: NSBundle?)。但是实现这个不允许我设置 SLComposeViewControllerserviceType,因为它是一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com