自iOS8起,苹果就建议告警框使用UIAlertController来代替UIAlertView
在ViewDidLoad中加载时报错 whose view is not in the window hierarchy! 视图没创建出来之前是不能弹出来的
解决办法,延长时间加载
1.一般的提示框
func normalController(){ let alertController = UIAlertController(title: "温馨提示", message: "还是UIAlertController好用!", preferredStyle: UIAlertControllerStyle.Alert) let cancelAction = UIAlertAction(title: "取消", style: UIAlertActionStyle.Cancel, handler: nil) let okAction = UIAlertAction(title: "确定", style: .Default, handler: { (alertC:UIAlertAction!) -> Void in //确定后相关操作在这里写 print("确定") }) alertController.addAction(cancelAction) alertController.addAction(okAction) self.presentViewController(alertController, animated: true) { () -> Void in print("弹框出来的时候调用") } }
2.底部弹框
func sheetController(){ let alertController = UIAlertController(title: "保存或删除数据", message: "删除之后不可恢复", preferredStyle: UIAlertControllerStyle.ActionSheet) let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil) //.Destructive文字变红警示用户 let deleteAction = UIAlertAction(title: "删除", style: .Destructive) { (alertC:UIAlertAction!) -> Void in print("毁灭了!") } let archiveAction = UIAlertAction(title: "保存", style: .Default) { (alertC : UIAlertAction!) -> Void in print("保存了!") } alertController.addAction(cancelAction) alertController.addAction(deleteAction) alertController.addAction(archiveAction) self.presentViewController(alertController, animated: true) { () -> Void in print("创建底部弹框") } }
3.文本输入框
func textController(){ let alertConreoller = UIAlertController(title: "登录", message: "请输入账号和密码", preferredStyle: .Alert) alertConreoller.addTextFieldWithConfigurationHandler { (textField:UITextField!) -> Void in textField.placeholder = "请输入账号名称" } alertConreoller.addTextFieldWithConfigurationHandler { (textField : UITextField!) -> Void in textField.placeholder = "请输入密码" textField.secureTextEntry = true//不让别人看到输入的密码 } let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil) let LoginAction = UIAlertAction(title: "登录", style: .Default) { (alertC : UIAlertAction!) -> Void in //确定后的操作 let userName = alertConreoller.textFields?.first?.text let passWorld = alertConreoller.textFields?.last?.text print(userName!,passWorld!) } alertConreoller.addAction(cancelAction) alertConreoller.addAction(LoginAction) self.presentViewController(alertConreoller, animated: true) { () -> Void in print("创建了文本输入框") } // self.performSelector(Selector("dismissController"), withObject: alertConreoller, afterDelay: 3) }
可以定时出现与消失
self.performSelector(Selector("dismissController"), withObject: alertConreoller, afterDelay: 3)
func dismissController(){ //移除文本提示框 self.presentedViewController?.dismissViewControllerAnimated(false, completion: nil) }