Swift Alert弹出窗口出现在模拟器iphone4s(8.1)中,而不是iphone4s(7.1)

时间:2015-03-03 14:32:34

标签: ios xcode swift uialertcontroller

我编写的代码用于在单击按钮时显示简单的警报弹出窗口。在模拟器iPhone 4s(8.1)中尝试应用程序时,它按预期工作,但在模拟器iPhone 4s(7.1)中尝试时,应用程序不断崩溃。

这里是代码:

@IBAction func buttonPressed(sender:UIButton){

    let controller = UIAlertController(title: "This is a title", message: "Hello, my friend", preferredStyle: UIAlertControllerStyle.Alert)
    let cancelAction = UIAlertAction(title: "Phew!", style: .Cancel, handler: nil)
    controller.addAction(cancelAction)
    self.presentViewController(controller, animated: true, completion: nil)
}

以下是错误消息:

第一行代码(创建“控制器”常量的代码)以绿色突出显示,并显示消息“Thread 1:EXC_BAD_ACCESS(Code = 1,address = 0x10)”

我将不胜感激任何帮助

3 个答案:

答案 0 :(得分:1)

UIAlertController适用于iOS> = 8.0

你必须使用UIAlertView for iOS< 8.0

答案 1 :(得分:0)

UIAlertController仅在iOS 8.0和病房中提供,不幸的是,这里是文档,它在右边说明了这一点:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertController_class/#//apple_ref/doc/uid/TP40014538-CH1-SW2

我相信这取代了现在已弃用的UIAlertView,它可以是在Apple文档中找到:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertView_Class/index.html#//apple_ref/occ/cl/UIAlertView

Swift不喜欢旧的但考虑和“if”子句,并使用应用程序为相应的iOS系统创建UIAlertView和UIAlertController。 / p>

答案 2 :(得分:0)

感谢Dom Bryan推荐的链接,我设法提供了以下解决方案:

@IBAction func buttonPressed(sender:UIButton){

    if NSClassFromString("UIAlertController") == nil{
        let alert = UIAlertView(title: "This is a title", message: "I am an iOS7 alert", delegate: self, cancelButtonTitle: "Phew!")
        alert.show()
    }else{
        let controller = UIAlertController(title: "This is a title", message: "Hello, my friend", preferredStyle: .Alert)
        let cancelAction = UIAlertAction(title: "Phew!", style: .Cancel, handler: nil)
        controller.addAction(cancelAction)
        self.presentViewController(controller, animated: true, completion: nil)
    }
}

它在iOS7和iOS8设备上正常运行