2016-12-28 3 views
0

iは、スウィフトに次の拡張機能を作成しようとしています:MFMailComposeViewControllerのinit引数なし

extension MFMailComposeViewController { 

     convenience init(document: Document) { 
     self.init() 

     // do some configuration... 
     setMessageBody("BlaBlaBla", isHTML: false) 
     } 

    } 

私はこれをコンパイルするために取得することはできませんよしかし:

は起動できません「MFMailComposeViewController.init」引数なしで

MFMailComposeViewControllerには引数がない初期設定がありますので、私には奇妙に思えます。

この問題を解決する方法上の任意の助けいただければ幸いです。あなたはcanSendMail方法を確認せずにデバイスまたはシミュレータ上でアプリケーションを実行する場合は、エラーを得た理由は

答えて

1

空のパラメータ(デフォルトのinitメソッド)を持ちます。

extension MFMailComposeViewController { 

    convenience init?(document: UIImage) { 

     guard MFMailComposeViewController.canSendMail() else { return nil } 

     self.init() 
     // continue setup the controller 


    } 

} 

次のコードで任意のメールアカウントを設定せずに、シミュレータ上でこれをテストすることができます。

class FirstViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let controller: MFMailComposeViewController? = MFMailComposeViewController() 
     guard let mail = controller else { return } 
     present(mail, animated: true, completion: nil) 
    } 

} 
+0

これですので、スーパーを使用して私に与え初期化子説得: 『MFMailComposeViewController』必見のための「コンビニエンス初期化子(「でsuper.init」付き)(「self.init」が)デリゲートではなく、スーパークラス初期化子に連鎖します」。予想される... –

+0

はちょうど私の最後で自分のコードをチェックします。文字列:そしてそれは – Saad

+0

輸入MessageUI クラスのドキュメント { VAR名働いていますか? } 延長MFMailComposeViewController { コンビニのinit(ドキュメント:文書){ self.init() //いくつかの設定を行う... setMessageBody( "BlaBlaBla"、isHTML:偽) } } – Saad

-1

は、あなたがそれを開始することによってnilオブジェクトを取得する代わりにself.init()の使用super.init()をsublcassing用と拡張自己のため

関連する問題