【iOS】UI——关于UIAlertController类(警告对话框)

目录

  • 前言
  • 关于UIAlertController
  • 具体操作及代码实现
  • 总结

前言

  在UI的警告对话框的学习中,我们发现UIAlertView在iOS 9中已经被废弃,我们找到UIAlertController来代替UIAlertView实现弹出框的功能,从而有了这篇关于UIAlertController的学习笔记。

关于UIAlertController

  UIAlertController 是 iOS SDK 中提供的一个强大且灵活的类,它可以用来显示警告框或者动作表。UIAlertController 取代了早期的 UIAlertView 和 UIActionSheet 类,提供了更加统一和灵活的界面。

具体操作及代码实现

//创建一个UIAlertController对象
//P1:弹出框的标题  P2弹出框的内容  
//P3:弹出的警告框的样式为UIAlertControllerStyleAlert(即中心弹出的警告框)
UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"标题" message:@"这是消息" preferredStyle:UIAlertControllerStyleAlert];//添加“确认”动作按钮到控制器上
//P1:标题文字  P2:动作样式,有三种动作样式:常规(default)、取消(cancel)以及警示(destruective)
//P3:用户选中并点击该动作时,所执行的代码
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {// 用户点击确认按钮后执行的代码
}];
//将动作按钮添加到alertController视图上
[alertController addAction:defaultAction];//添加“取消”动作按钮到控制器上
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {// 用户点击取消按钮后执行的代码
}];
//将动作按钮添加到alertController视图上
[alertController addAction:cancelAction];//将警告框显示出来
[self presentViewController:alertController animated:YES completion:nil];

  这个示例创建了一个 UIAlertController,并设置了标题、消息以及样式。然后,我们创建了两个 UIAlertAction,一个是默认的操作,另一个是取消操作(有三种动作样式:常规(default)、取消(cancel)以及警示(destruective))。这两个操作都有处理器,所以当用户点击这些按钮时,会执行相应的代码块。最后,我们使用 presentViewController:animated:completion: 方法来显示警告框。

  将以上代码放进xcode的"ViewController.h"文件的viewDidLoad函数中,运行后你会发现,模拟器屏幕上无任何显示,这是因为:

在 iOS 开发中,警告对话框(UIAlertController)不能直接被呈现,必须在某个存在的视图控制器(UIViewController)上呈现。这是因为UIAlertController实际上是一个视图控制器,而所有的视图控制器都需要一个父视图控制器才能被用户看到。

  为了看到警告框的效果,我们另外创建一个UIButton对象,用来触发警告框。

UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame = CGRectMake(100, 100, 80, 80);btn.backgroundColor = [UIColor cyanColor];[self.view addSubview:btn];[btn addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];

将UIAlertController相关操作放在btn的press函数里即可。完整代码如下:

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame = CGRectMake(100, 100, 80, 80);btn.backgroundColor = [UIColor cyanColor];[self.view addSubview:btn];[btn addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
}- (void) press {//创建一个UIAlertController对象//P1:弹出框的标题  P2弹出框的内容//P3:弹出的警告框的样式为UIAlertControllerStyleAlert(即中心弹出的警告框)UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"标题" message:@"这是消息" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:nil];[alertController addAction:defaultAction];UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];[alertController addAction:cancelAction];[self presentViewController:alertController animated:YES completion:nil];
}@end

按下btn按钮后的运行结果:
在这里插入图片描述

总结

  当我们需要显示一个警告对话框时,我们要在当前的视图控制器上呈现它;如果当前不在视图控制器中,但是需要显示警告对话框,我们需要获取到当前的视图控制器,或者创建一个新的视图控制器来呈现警告对话框。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/850137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nextjs学习教程

一.手动创建项目 建议看这个中文网站文档,这个里面的案例配置都是手动的,也可以往下看我这个博客一步步操作 1.在目录下执行下面命令,初始化package.json文件 npm init -y2.安装react相关包以及next包 yarn add next react react-dom // 或者 npm install --save next react…

k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)

故障信息 pod一直处于创建中 查看pod详细信息显示 kubectl describe pod 容器id文字 Events: Type Reason Age From Message Normal Scheduled 5m30s default-scheduler Successfully assigned default/nginx-server2-f97c6b9d5-d6dsp to worker02 Warning FailedCreatePod…

C语言之字符函数总结(全部!),一篇记住所有的字符函数

前言 还在担心关于字符的库函数记不住吗?不用担心,这篇文章将为你全面整理所有的字符函数的用法。不用记忆,一次看完,随查随用。用多了自然就记住了 字符分类函数和字符转换函数 C语言中有一系列的函数是专门做字符分类和字符转换…

XML解析库tinyxml2库使用详解

XML语法规则介绍及总结-CSDN博客 TinyXML-2 是一个简单轻量级的 C XML 解析库,它提供了一种快速、高效地解析 XML 文档的方式。 1. 下载地址 Gitee 极速下载/tinyxml2 2. 基本用法 下面将详细介绍 TinyXML-2 的主要使用方法: 2.1. 引入头文件和命名空间 #i…

Acrobat Pro DC 2023 for Mac/Win:全平台PDF编辑器的终极解决方案

对于需要处理PDF文档的个人和企业用户来说,Adobe Acrobat Pro DC 2023是一款不可或缺的工具。作为全球领先的PDF编辑器,Acrobat Pro DC 2023在Mac和Windows平台上提供了丰富的功能和令人印象深刻的性能,使其成为用户编辑、转换和管理PDF文档的…

Vue09-事件处理

一、一个简单的示例 v-on&#xff1a;当xxx的时候。 二、事件处理 2-1、参数说明 <div id"root"><h1>你好呀&#xff0c;{{name}}</h1><button v-on:click"showinfo">点击我</button></div><script>new Vue({e…

像素着色技术在AI绘画中的革新作用

摘要&#xff1a;随着人工智能技术的不断进步&#xff0c;AI绘画已成为艺术和技术领域中的一个热门话题。本文将探讨像素着色技术在AI绘画中的应用及其对创作过程的影响&#xff0c;揭示这一技术如何推动艺术创作的革新。 引言&#xff1a; 传统的绘画方法要求艺术家具备高超的…

堆排序-调整算法

个人主页点这里!~ 1.堆 了解堆排序首先要了解一下堆这个数据结构 堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;它通常被表示为一个完全二叉树或近似完全二叉树&#xff0c;并且满足堆性质&#xff08;Heap Property&#xff09;。堆主要分为两种&…

【web前端开发】标签(基础知识详解)

浏览器能识别的标签 编码 <meta charset"UTF-8"> title <title>helloshh</title> 标题 <h1>1级标签</h1> <h2>2级标签</h2> <h3>3级标签</h3> <h4>4级标签</h4> <h5>5级标签</h5> &…

突发!凌晨4点某制造业大厂国产数据库集群故障...

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

vivado DIAGRAM、HW_AXI

图表 描述 块设计&#xff08;.bd&#xff09;是在IP中创建的互连IP核的复杂系统 Vivado设计套件的集成商。Vivado IP集成器可让您创建复杂的 通过实例化和互连Vivado IP目录中的IP进行系统设计。一块 设计是一种分层设计&#xff0c;可以写入磁盘上的文件&#xff08;.bd&…

AI绘画中的图像格式技术

在数字艺术的广阔天地里&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;正在逐渐占据一席之地。不同于传统绘画&#xff0c;AI绘画依赖于复杂的算法和机器学习模型来生成图像&#xff0c;而这一切的背后&#xff0c;图像格式技术发挥着至关重要的作用。图像格式不仅关系…

量化视频1---qmt实盘交易链接,提供源代码

量化视频1---qmt实盘交易链接&#xff0c;提供源代码 量化视频1---qmt实盘交易链接&#xff0c;提供源代码 (qq.com) 源代码 from qmt_trader.qmt_trader import qmt_tradertraderqmt_trader(path rD:/国金QMT交易端模拟/userdata_mini, session_id 123456…

CTF Show MISC做题笔记

MISCX 30 题目压缩包为misc2.rar,其中包含三个文件:misc1.zip, flag.txt, hint.txt。其中后两个文件是加密的。 先解压出misc1.zip, 发现其中包含两个文件&#xff1a;misc.png和music.doc。其中后面文件是加密的。 解压出misc.png,发现图片尾部有消息&#xff1a;flag{flag…

最新区块链论文速读--CCF A会议 CCS 2023 共25篇 附pdf下载(2/4)

Conference&#xff1a;ACM Conference on Computer and Communications Security (CCS) CCF level&#xff1a;CCF A Categories&#xff1a;network and information security Year&#xff1a;2023 Num&#xff1a;25 第1~7篇区块链文章请点击此处查看上篇 8 Title: P…

【C/C++】IO流

目录 前言&#xff1a; 一&#xff0c;C语言的I/O流 二&#xff0c;C的I/O流 2-1&#xff0c;C标准IO流 2-2&#xff0c;IO流的连续输入 前言&#xff1a; “流”即是流动的意思&#xff0c;是物质从一处向另一处流动的过程&#xff0c;是对一种有序连续且具有方向性的数据…

测试基础11:测试用例设计方法-等价类划分

课程大纲 1、概述 1.1测试用例设计方法意义 穷举测试&#xff1a;每种输入都测一次。最完备&#xff0c;但不现实。 使用设计方法&#xff0c;用最少的数据&#xff08;成本&#xff09;&#xff0c;实现最大的测试覆盖。 1.2常用设计方法 ①等价类划分 ②边界值分析 ③错误推…

运维开发(DevOps):加速软件交付的关键方法

1. 什么是运维开发 运维开发&#xff08;DevOps&#xff09;是将软件开发&#xff08;Development&#xff09;与信息技术运维&#xff08;Operations&#xff09;的流程整合在一起的实践方法。DevOps的目标是通过增强开发和运维团队之间的协作&#xff0c;提高软件产品的发布…

【计算机视觉】数字图像处理基础:以像素为单位的图像基本运算(点运算、代数运算、逻辑运算、几何运算、插值)

0、前言 在上篇文章中&#xff0c;我们对什么是数字图像、以及数字图像的组成&#xff08;离散的像素点&#xff09;进行了讲解&#x1f517;【计算机视觉】数字图像处理基础知识&#xff1a;模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类。 我们知道&a…

【ARM Cache 与 MMU 系列文章 7.3 – ARMv8/v9 MMU 块描述符与页表描述符】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 上篇文章&#xff1a;【ARM Cache 系列文章 7.2 – ARMv8/v9 MMU 页表配置详细介绍 03 】 文章目录 MMU 块描述符与页描述符Block DescriptorBlock descriptor formatsBlock Entry 介绍Block En…