【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.rhkb.cn/news/344224.html

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

相关文章

【数据结构】六种排序实现方法及区分比较

文章目录 前言插入排序希尔排序选择排序堆排序快速排序冒泡排序总结 前言 众所周知,存在许多种排序方法,作为新手,最新接触到的就是冒泡排序,这种排序方法具有较好的教学意义,但是实用意义不高,原因就在于…

用互斥锁解决缓存击穿

我先说一下正常的业务流程:需要查询店铺数据,我们会先从redis中查询,判断是否能命中,若命中说明redis中有需要的数据就直接返回;没有命中就需要去mysql数据库查询,在数据库中查到了就返回数据并把该数据存入…

【Ardiuno】实验使用ESP32连接Wifi(图文)

ESP32最为精华和有特色的地方当然是wifi连接,这里我们就写程序实验一下适使用ESP32主板连接wifi,为了简化实验我们这里只做了连接部分,其他实验在后续再继续。 由于本实验只要在串口监视器中查看结果状态即可,因此电路板上无需连…

FFmpeg播放器的相关概念【1】

播放器框架 相关术语 •容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。 • 媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段…

竞拍商城系统源码后端PHP+前端UNIAPP

下载地址:竞拍商城系统源码后端PHP前端UNIAPP

【数据结构】初识数据结构之复杂度与链表

【数据结构】初识数据结构之复杂度与链表 🔥个人主页:大白的编程日记 🔥专栏:C语言学习之路 文章目录 【数据结构】初识数据结构之复杂度与链表前言一.数据结构和算法1.1数据结构1.2算法1.3数据结构和算法的重要性 二.时间与空间…

【计算机毕业设计】基于SSM++jsp的在线医疗服务系统【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Ubuntu server 24.04 (Linux) 搭建DNS服务器 通过Nginx实现UDP/TCP负载均衡 轻量级dnsmasq服务器

一 系统运行环境 testtest:~$ cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubuntu ID_LIKEdebian HOME_URL"https://www.…

国际货币基金组织警告:网络攻击影响全球金融稳定

近日,在一份关于金融稳定的报告中,国际货币基金组织(IMF)用了一章(共三章)的篇幅描述了网络攻击对金融环境的影响,并警告称,全球金融稳定正受到日益频繁和复杂的网络攻击的威胁。同时…

Python的登录注册界面跳转汽车主页面

1.登录注册界面的代码: import tkinter as tk from tkinter import messagebox,ttk from tkinter import simpledialog from ui.car_ui import start_car_ui# 设置主题风格 style ttk.Style() style.theme_use("default") # 可以根据需要选择不同的主题…

你可以直接和数据库对话了!DB-GPT 用LLM定义数据库下一代交互方式,数据库领域的GPT、开启数据3.0 时代

✨点击这里✨:🚀原文链接:(更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号!) 你可以直接和数据库对话了!DB-GPT 用LLM定义数据库下一代交互方式,数据库领…

网页文档下载不了怎么办 网页文档下载方法

一个方法,搞定所有网页文档下载。如果你也需要从网页下载各种文档,那么本文一定可以帮到你。无须充值会员,各大平台文档下到爽。看到就是赚到,还不赶快学起来。有关网页文档下载不了怎么办,网页文档下载方法的问题&…

LabVIEW控制PLC的实现方式

LabVIEW与PLC的结合可以充分发挥两者的优点,实现更高效、灵活和可靠的自动化控制系统。本文将详细介绍LabVIEW控制PLC的实现方式,包括通信接口、数据交换、编程方法及实际应用案例,帮助用户理解并应用这一技术。 通信接口 常见通信协议 La…

Linux下线程的互斥与同步详解

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误或者有写的不好的地方的话&…

HIP的应用可移植性

Application portability with HIP — ROCm Blogs (amd.com) 许多科学应用程序在配备AMD的计算平台和超级计算机上运行,包括Frontier,这是世界上第一台Exascale系统。这些来自不同科学领域的应用程序通过使用Heterogeneous-compute Interface for Portab…

tomcat8w.exe指向了别的tomcat

这种情况通常发生是因为Tomcat服务在注册表中的配置指向了错误的可执行文件路径。tomcat8w.exe是一个Windows服务配置工具,它用于管理Tomcat服务,包括设置Path to executable,即指向Tomcat服务实际启动的.exe文件的路径。如果Path to executa…

Windows下对于Qt中带 / 的路径的处理

在Windows下,如果你想使用操作系统的分隔符显示用户的路径,请使用 toNativeSeparators()。 请看以下代码: void Player::on_playBtn_clicked() {if (this->m_url.isEmpty()) {openMedia();if (this->m_url.isEmpty())return;}qDebug(…

如何使用Python的Turtle模块绘制小猪

一、前置条件 在开始学习如何使用Python的Turtle模块进行绘画之前,请确保你的电脑已安装Python环境。如果尚未安装Python,你可以从Python官网下载并安装最新版本。 Turtle模块是Python内置的一个用于绘图的库,通常不需要额外安装。如果你发…

反转链表 (oj题)

一、题目链接 https://leetcode.cn/problems/reverse-linked-list/submissions/538124207 二、题目思路 1.定义三个指针,p1先指向NULL p2指向头结点 p3指向第二个结点 2.p2的next指向p1。然后移动指针,p1来到p2的位置,p2来到p3的位置&…

Latex中表格(3)

Latex中的表格 一、多行或多列单元格 这篇主要说Latex中表格出现多行或者多列单元格的形式. 一、多行或多列单元格 可能用到的宏包 \usepackage{booktabs}\usepackage{multirow} 代码: \begin{table}[h!] \centering \caption{Your caption here} \begin{tabul…