xcode 7beta3 で Swift を使用してスプライト キットで iPad ゲームを作成しています。ゲームの完了後に、ゲームの結果をユーザーのメールに送信したいと考えています。ユーザーは send というボタンを押して、メールアドレスを入力してメッセージを送信できる場所にリダイレクトする必要があります。しかし、メールの作成方法と送信方法がわかりません。
私はこの質問に対する回答をインターネット全体で検索してきましたが、すべて古いバージョンの回答です。お役に立てれば幸いです。
前もって感謝します
編集: 私はもう少し検索して解決策を見つけました(ここ: http://kellyegan.net/sending-files-using-swift/ )が、まだ問題があります。私の GameViewController に追加しました:
override func viewDidLoad() {
super.viewDidLoad()
let scene = StartGameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
skView.presentScene(scene)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
internal func sendEmail() {
//Check to see the device can send email.
if( MFMailComposeViewController.canSendMail() ) {
print("Can send email.")
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
//Set the subject and message of the email
mailComposer.setSubject("Have you heard a swift?")
mailComposer.setMessageBody("This is what they sound like.", isHTML: false)
if let filePath = NSBundle.mainBundle().pathForResource("Math", ofType: "txt") {
print("File path loaded.")
if let fileData = NSData(contentsOfFile: filePath) {
print("File data loaded.")
mailComposer.addAttachmentData(fileData, mimeType: "text/plain", fileName: "Math")
}
}
self.presentViewController(mailComposer, animated: true, completion: nil)
}
}
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
self.dismissViewControllerAnimated(true, completion: nil)
}
ボタンを押すと、私の gameScenes の 1 つで sendMail() が呼び出されます。問題は、そのボタンを押すとエラーが発生することです。プリントアウトします
メールを送信できます。ファイル パスが読み込まれました。ファイルデータが読み込まれました。
必要に応じて、エラーが発生します。
タイプ 'UIView' (0x1964ea508) の値を 'SKView' (0x19624f560) にキャストできませんでした。
問題は self.presentViewController() だと思いますが、修正方法がわかりません。