1

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() だと思いますが、修正方法がわかりません。

4

0 に答える 0