繁体   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