誰もがiOS 10でUIActivityViewを使用する方法を知っていますか? Swift 3.0では何らかの理由でコンパイルとビルドが行われるようになりましたが、次のコードを使用して共有ボタンを押した後にアプリケーションが実行されているときにアプリケーションクラッシュが発生しました... iOS 9.3とSwift 2.0では完全に機能しました。コード行6またはlet objectsToShare = [textToShare] as! AnyObject
のコメントで指定されているようにiOS 10のUIActivityViewController
は、スレッド1の原因:シグナルSIGABRTとアプリケーションのクラッシュ
@IBOutlet weak var detailDescriptionLabel: UITextView!
@IBAction func share(_ sender: AnyObject) {
let textToShare = detailDescriptionLabel.attributedText
let objectsToShare = [textToShare] as! AnyObject
// line above causes app crash in iOS 10 - compiled and built
// error is "Thread1: signal SIGABRT"
let activityVC = UIActivityViewController(activityItems: objectsToShare as! [AnyObject], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = (sender as! UIView)
self.present(activityVC, animated: true, completion: nil)
}
class ActivityForNotesViewController: UIActivityViewController {
internal func _shouldExcludeActivityType(_ activity: UIActivity) -> Bool {
let activityTypesToExclude = [
//insert UIActivity here
]
if let actType = activity.activityType {
if activityTypesToExclude.contains(actType) {
return true
}
else if super.excludedActivityTypes != nil {
return super.excludedActivityTypes!.contains(actType)
}
}
return false
}
}
私はそれを感謝し、私を助けることができる人。
なぜ配列をAnyObjectにキャストしますか?それはあまり意味がありません。 – Andy
@Andyなぜ私は実際にそれをやったのか分かりません。何らかの理由で、コードからそのテキストを削除しても、コンパイラは不平を言います。それは意味をなさないし、キャストを作成しない方が効率的ですが、私はそれがなくても動作させる方法について100%ではありません。 – KSigWyatt
もし私が推測しなければならなかったのは、 'UIActivityViewController(activityItems:'関数はここでは 'objectsToShare as![AnyObject]' – KSigWyatt