簡體   English   中英

Swift中的MFMessageComposeViewController初始化

[英]MFMessageComposeViewController Initialization in Swift

我目前正在開發一個應用程序,希望在該應用程序中發送短信,以確認用戶具有從其發送的號碼。 然后,我進行一些后端工作,並查詢服務器以查看號碼是否已驗證。

唯一的問題是我無法發送短信。 從網上可以找到的唯一教程和文檔是Objective-C。

我已盡我所能復制了它,但是有一部分我也找不到Swift的等效項。 “初始化”。

func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {

    if (result.value == MessageComposeResultCancelled.value) {
        NSLog("Message was cancelled.");
    }
    else if (result.value == MessageComposeResultFailed.value) {
        var warningAlert : UIAlertView = UIAlertView.alloc();
        warningAlert.title = "Error";
        warningAlert.message = "Failed to send SMS!";
        warningAlert.delegate = nil;
        warningAlert.show();
        NSLog("Message failed.");
    } else {
        NSLog("Message was sent.");
    }
    self.dismissViewControllerAnimated(true, completion: nil);
}

func showSMS() {
    if (!MFMessageComposeViewController.canSendText()) {
        var warningAlert : UIAlertView = UIAlertView.alloc();
        warningAlert.title = "Error";
        warningAlert.message = "Your device does not support SMS.";
        warningAlert.delegate = nil;
        warningAlert.show();
        return;
    }

    var recipients : NSArray = ["1234567890"];
    var message : NSString = "Message.";


    // This is the problem line I think....
    let messageController : MFMessageComposeViewController = MFMessageComposeViewController.alloc();

    /* In Objective-C it is: */
    // MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];

    // I have also tried this...
    let messageC : MFMessageComposeViewController! = MFMessageComposeViewController();


    messageController.messageComposeDelegate = self;
    messageController.recipients = recipients;
    messageController.body = message;

    self.presentViewController(messageController, animated: true, completion: nil);
}

我相信問題是,當我運行此消息時,MFMessageComposeViewController尚未完全實例化。 因此,當它命中此代碼時,無需打開消息對話框,屏幕只會變黑。 我發現這是在Objective-C中未初始化同一行時的問題。

先謝謝您的幫助。

你說的很對。 這是從來沒有被init -ed -因為你永遠不會init -ing它。 您正在調用alloc ,這是錯誤的。

永遠不會在Swift中調用alloc 好吧,您可能會,但不是正常情況。 只是初始化。 像這樣:

let messageController = MFMailComposeViewController()

實際上,這就是您真正想要的對init的調用。

(您可能想先停止並繼續學習Swift語言以及它如何調用初始化程序,因為顯然在代碼的所有地方這樣做都是完全錯誤的。)

在Swift中,要初始化:

 let smsComposer:MFMessageComposeViewController = MFMessageComposeViewController()

不要忘記設置委托:

  smsComposer.messageComposeDelegate = self

目標-c回購

迅捷回購

蘋果文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM