ios uialertcontroller能在一个界面使用两个吗

如题所述

添加了新的类UIAlertController和UIAlertAction来取代曾经的UIAlertView和UIActionSheet,感觉警告窗口的结构更容易理解了,使用起来也更简便。但是曾经用Xcode5创建过iOS7程序在iOS8设备上运行就会出现各种问题。我清晰地记得刚刚升级iOS8后连微信的警示操作表也出了问题,猜测可能是因此而起的。下面来看看UIAlertController和UIAlertAction用法:1.最简单的提醒视图:这里我们实现一个最简单的提醒视图,包含1个标题,1行信息,1个按键,按下按键后,什么都不发生:[objc]viewplaincopy-(IBAction)doAlert:(id)sender{//准备初始化配置参数NSString*title=@"AlertButtonSelected";NSString*message=@"IneedyourattentionNOW!";NSString*okButtonTitle=@"OK";//初始化UIAlertController*alertDialog=[UIAlertControlleralertControllerWithTitle:titlemessage:messagepreferredStyle:UIAlertControllerStyleAlert];//创建操作UIAlertAction*okAction=[UIAlertActionactionWithTitle:okButtonTitlestyle:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action){//操作具体内容//Nothingtodo.}];//添加操作[alertDialogaddAction:okAction];//呈现警告视图[selfpresentViewController:alertDialoganimated:YEScompletion:nil];}进入程序后,点击“AlertMe!”按钮可触发这个提醒框,如图所示:从代码可以看出,新的API更加符合逻辑,有种需要什么就加什么的感觉。2.多个按键的提醒视图这里我们实现一个最简单的提醒视图,包含1个标题,1行信息,3个按键,按下按键后,标签显示按下的按键名称:[objc]viewplaincopy-(IBAction)doMultiButtonAlert:(id)sender{//准备初始化配置参数NSString*title=@"AlertButtonSelected";NSString*message=@"IneedyourattentionNOW!";NSString*okButtonTitle=@"OK";NSString*neverButtonTitle=@"Never";NSString*laterButtonTitle=@"MaybeLater";//初始化UIAlertController*alertDialog=[UIAlertControlleralertControllerWithTitle:titlemessage:messagepreferredStyle:UIAlertControllerStyleAlert];//分别3个创建操作UIAlertAction*laterAction=[UIAlertActionactionWithTitle:laterButtonTitlestyle:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action){//普通按键self.userOutput.text=@"Clicked'MaybeLater'";}];UIAlertAction*neverAction=[UIAlertActionactionWithTitle:neverButtonTitlestyle:UIAlertActionStyleDestructivehandler:^(UIAlertAction*action){//红色按键self.userOutput.text=@"Clicked'Never'";}];UIAlertAction*okAction=[UIAlertActionactionWithTitle:okButtonTitlestyle:UIAlertActionStyleCancelhandler:^(UIAlertAction*action){//取消按键self.userOutput.text=@"Clicked'OK'";}];//添加操作(顺序就是呈现的上下顺序)[alertDialogaddAction:laterAction];[alertDialogaddAction:neverAction];[alertDialogaddAction:okAction];//呈现警告视图[selfpresentViewController:alertDialoganimated:YEScompletion:nil];}3个按键分别代表了3种不同类型的按键,分别是默认按键(普通)、销毁按键(红色)和取消按键(粗体)。从代码看其实就是在上一个的基础上加了3个UIAlertAction而已,然后分别设置不同的style,效果如下:3.带输入框的提醒视图如何添加输入框呢?新的iOS8提供了相应的接口,使增加输入框就像增加按键方法一样简单。这里还是在第1个方法的基础上改动。[objc]viewplaincopy-(IBAction)doAlertInput:(id)sender{//准备初始化配置参数NSString*title=@"EmailAddress";NSString*message=@"Pleaseenteryouryouremailaddress:";NSString*okButtonTitle=@"OK";//初始化UIAlertController*alertDialog=[UIAlertControlleralertControllerWithTitle:titlemessage:messagepreferredStyle:UIAlertControllerStyleAlert];//创建文本框[alertDialogaddTextFieldWithConfigurationHandler:^(UITextField*textField){textField.placeholder=@"YourEmail";textField.secureTextEntry=NO;}];//创建操作UIAlertAction*okAction=[UIAlertActionactionWithTitle:okButtonTitlestyle:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action){//读取文本框的值显示出来UITextField*userEmail=alertDialog.textFields.firstObject;self.userOutput.text=userEmail.text;}];//添加操作(顺序就是呈现的上下顺序)[alertDialogaddAction:okAction];//呈现警告视图[selfpresentViewController:alertDialoganimated:YEScompletion:nil];}在创建操作前先创建文本框,以便后面的按键可以操作文本框内容。创建文本框也只是用了一个简单的方法而已,想创建文本框就再使用多次这个方法即可,程序效果如下:4.提醒图表与第2个和第3个方法相比,创建提醒图表简直易如反掌。因为和第1个方法相比,只需要改动一个参数就可以,即把创建UIAlertController实例的参数UIAlertControllerStyleAlert改为UIAlertControllerStyleActionSheet,别的都不用变。[objc]viewplaincopy-(IBAction)doActionSheet:(id)sender{//准备初始化配置参数NSString*title=@"AlertButtonSelected";NSString*message=@"IneedyourattentionNOW!";NSString*okButtonTitle=@"OK";NSString*neverButtonTitle=@"Never";NSString*laterButtonTitle=@"MaybeLater";//初始化UIAlertController*alertDialog=[UIAlertControlleralertControllerWithTitle:titlemessage:messagepreferredStyle:UIAlertControllerStyleActionSheet];//分别3个创建操作UIAlertAction*laterAction=[UIAlertActionactionWithTitle:laterButtonTitlestyle:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action){//普通按键self.userOutput.text=@"Clicked'MaybeLater'";}];UIAlertAction*neverAction=[UIAlertActionactionWithTitle:neverButtonTitlestyle:UIAlertActionStyleDestructivehandler:^(UIAlertAction*action){//红色按键self.userOutput.text=@"Clicked'Never'";}];UIAlertAction*okAction=[UIAlertActionactionWithTitle:okButtonTitlestyle:UIAlertActionStyleCancelhandler:^(UIAlertAction*action){//取消按键self.userOutput.text=@"Clicked'OK'";}];//添加操作(顺序就是呈现的上下顺序)[alertDialogaddAction:laterAction];[alertDialogaddAction:neverAction];[alertDialogaddAction:okAction];//呈现警告视图[selfpresentViewController:alertDialoganimated:YEScompletion:nil];}这个就很简单了,跟第2个方法很像,效果如图:5.播放系统声音、提醒声音和振动设备在iOS8中,调用声音的方法发生了小变化,用曾经的方式无法获取系统声音文件的soundID。因此,这里直接调用soundID值来调用对应的声音,注意振动仍然正常调用kSystemSoundID_Vibrate常量即可:[objc]viewplaincopy-(IBAction)doSound:(id)sender{//播放系统声音AudioServicesPlaySystemSound(1005);}-(IBAction)doAlertSound:(id)sender{//播放提醒声音AudioServicesPlayAlertSound(1006);}-(IBAction)doVibration:(id)sender{//执行震动AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);}这样在iOS8中就可以对用户发出提示了。
温馨提示:内容为网友见解,仅供参考
无其他回答

iOS的alert,有两个操作的时候,加粗逻辑是怎样的呢
3个按键分别代表了3种不同类型的按键,分别是默认按键(普通)、销毁按键(红色)和取消按键(粗体)。从代码看其实就是在上一个的基础上加了3个 UIAlertAction 而已,然后分别设置不同的 style,效果如下:3. 带输入框的提醒视图 如何添加输入框呢?新的 iOS 8 提供了相应的接口,使增加输入框就像...

ios10的replaykit怎么用
3、我们创建一个UIAlertController,它有两个action,一个为丢弃记录,另一个为回看记录。选择丢弃记录则调用discardRecordingWithHandler(_:)这个方法。要注意的是,这个方法只能在确保录制成功地完成后才可以调用,要是在录制进行的时候就调用的话,虽然系统不会抛出任何错误,但是也不会丢弃任何记录。 4、选择回看记录,我...

iOS获取最顶层ViewController
一次只能有一个 KeyWindow,通过设置 UIWindowLevel 数值来调整窗口的层级,Level 数值越高的窗口越靠前。如果两个窗口的 Level 相同,使用 makeKeyAndVisible 来显示 KeyWindow。通过 UIApplication.sharedApplication().keyWindow 可以获取当前应用的主窗口。分析:UIApplication 作为程序运行期间的控制和协作中心...

iOS开发 怎么识别两个UIActionSheet事件
} 这样,根据tag的值,判断不同的UIActionSheet,不过现在iOS9使用了UIAlertController,这个挺好用的,你有时间可以研究一下!

mac函数是什么意思
[self presentViewController:alertController animated:YES completion:nil];这段代码就是利用UIKit库提供的UIAlertController类实现的一个简单的对话框,它会在UI界面上弹出一个警示框,提示用户一些信息。Mac函数库的分类 Mac函数库可以按照不同的分类方式进行划分:系统框架:包括Apple提供的各种核心框架,如...

如何用代码实现更改用户头像 ios
Step2:弹出选择提示->提示框(UIAlertController)通过添加UITapGestureRecognizer(手势),系统就知道了我点击了头像,接着,就可以添加具体的方法来进行操作了。在上一步,我为这个手势的action,selector(选择)了一个方法来执行,即alterHeadPortrait:(注意有冒号的),也就是当我们点击了头像之后,会...

iOS 8 新增 4000 多个 API,重要的有哪些
如果希望在 iOS 上实现「毛玻璃」效果,只能用两种很蛋疼的办法(1. 用类似 GPUImage 这样的图像处理库实时截屏、做高斯模糊、调整亮度、饱和度;2.将视图底色设置为透明,在视图底下放一个 UIToolBar)OS X 和 iOS 联动功能(handoff)的 API 是开放的(微信、QQ、Word 等应用也可以获得类似系统内...

总结iOS APP应用审核被拒原因
然后就上了一个版本,结果还是被拒了。当时急着上线,直接把这个功能去掉就通过了。 2.后台定位服务 Your app uses background location services but does not clarify the purpose of its use in the location modal alert as required in the iOS Human Interface Guidelines . We've attached screenshot(s) ...

ios 怎么更新tableview位置
只需向下轻扫,即可迅速掌握各类动态信息。需要注意的是,之所以说是一个新功能,是因为iOS 7的通知中心较以往而言,变成了三栏——今天,全部,未读通知。4.更加智能的多任务处理多任务处理始终是在 App 之间切换的捷径。因此,它变得更加智能。因为 iOS 7 会了解你喜欢何时使用 App,并在你启动 App...

如何适配iOS8 iOS9 iOS10
只需向下轻扫,即可迅速掌握各类动态信息。需要注意的是,之所以说是一个新功能,是因为iOS 7的通知中心较以往而言,变成了三栏——今天,全部,未读通知。4.更加智能的多任务处理多任务处理始终是在 App 之间切换的捷径。因此,它变得更加智能。因为 iOS 7 会了解你喜欢何时使用 App,并在你启动 App...

相似回答