我有一个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)
}
}
}
感谢任何对此有所了解的人。
答案 0 :(得分:0)
我在多个地方一直都会遇到此错误,并且不会导致任何问题。忽视似乎是安全的。
答案 1 :(得分:0)
我有一个OK按钮几乎完全相同的问题,我给了一个空的处理程序,像这样:
let okButton = UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
})
当它只是呈现警报本身时,我已经开始抛出这些警告了,但是按下OK按钮会抛出另一个警告。
首先我删除了处理程序(将其设置为nil),因为我没有做任何事情。这使警告消失了。我做的下一件事是试图看看如何解决问题,然后我再次添加它。没有更多的错误。
我认为这是一个Xcode /调试器/编译器问题,但确保在启动警报时你也在正确的线程中。在你提交之前总是修复警告,你不能确定别人在你确定它已经消失之前不会经历它。