在UIAlertController给出_BSMachError之后呈现UIActivityViewController

时间:2016-02-02 11:18:04

标签: swift uiactivityviewcontroller uialertcontroller

我有一个UIAlertAction触发UIActivityViewController的呈现。如何确保UIAlertController被解除,以便在呈现UIActivityViewController时我不会得到如下所示的错误_BSMachError。如何从UIAlertAction处理程序中正确解除UIAlertController?我查看了SO上的各个帖子,并认为这个问题导致了错误信息,但当然可能不是!!

第一个UIAlertController是:

 func presentDone() {
    let doneAlert = UIAlertController(title: "Done!",
        message: "",
        preferredStyle: .Alert)

    let sendLater = UIAlertAction(title: "Send Later", style: .Default) {action -> Void in}
    let sendCode = UIAlertAction(title: "Send Now", style: .Default, handler: sendCodeAlert)
    doneAlert.addAction(sendCode)
    doneAlert.addAction(sendLater)
    self.presentViewController(doneAlert, animated: true, completion: nil)
}

当按下sendCode按钮时,_BSMachError:(os / kern)无效功能(20)_BSMachError:(os / kern)出现无效名称(15)。

func sendCodeAlert(alert: UIAlertAction) {

    let message: String = "Hi! Ready to go!"
    let postItems: [AnyObject] = [message] 
    let controller: UIActivityViewController = UIActivityViewController(activityItems: postItems, applicationActivities: nil)

    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Phone {
        self.presentViewController(controller, animated: true, completion: nil)
    } else {
        let popup: UIPopoverController = UIPopoverController(contentViewController: controller)
        popup.presentPopoverFromRect(CGRectMake(self.view.frame.size.width / 2, self.view.frame.size.height / 4,0,0), inView: self.view, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
    }
    }
}

感谢任何对此有所了解的人。

2 个答案:

答案 0 :(得分:0)

我在多个地方一直都会遇到此错误,并且不会导致任何问题。忽视似乎是安全的。

答案 1 :(得分:0)

我有一个OK按钮几乎完全相同的问题,我给了一个空的处理程序,像这样:

    let okButton = UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in

    })

当它只是呈现警报本身时,我已经开始抛出这些警告了,但是按下OK按钮会抛出另一个警告。

首先我删除了处理程序(将其设置为nil),因为我没有做任何事情。这使警告消失了。我做的下一件事是试图看看如何解决问题,然后我再次添加它。没有更多的错误。

我认为这是一个Xcode /调试器/编译器问题,但确保在启动警报时你也在正确的线程中。在你提交之前总是修复警告,你不能确定别人在你确定它已经消失之前不会经历它。