IOS 自定义UIAlertController

2023-05-16

自定义UIAlertController:

首先展示效果图

1.创建一个新的类来管理弹出的视图(继承于UIView)

在这里插入图片描述

2.传建一个xib文件来自定义弹出视图(注意创建过后一定要将xib的class关联)

在这里插入图片描述

3.在xib里面自定义自己想要弹出视图的样式(这里可以再拖一个View并关联同一个Class 在使用的时候选择一个使用)

在这里插入图片描述

4.关联按钮和点击事件(如果有两个View 关联按钮和事件的时候不要去创建两个,如图直接拖动)

在这里插入图片描述

上下和左右是我的两个VIew 的名字

在这里插入图片描述

在这里插入图片描述

5.最后就是提供外部调用类的创建方法和事件和按钮的触发

这是CustomAlertView.h的代码
#import <UIKit/UIKit.h>
/回调/
typedef void(^SureButtonBlock)(void);
/**/
typedef void(^CancelBlock)(void);

typedef enum{
kAlertViewStyleUpAndDown,
kAlertViewStyleLeftAndRight,
}kAlertViewStyle;

@interface CustomAlertView : UIView
/**
快速创建CustomAlertView的一个对象
*/
+(instancetype)alertViewWithImageName:(NSString )imageName title:(NSString )title style:(kAlertViewStyle)style;
/

在视图上显示
*/
-(void)show;
-(void)showInView:(UIView *)superView;

/** 删除提示视图
*/
-(void)dismiss;

-(void)okButtonTitle:(NSString *)title complished:(SureButtonBlock)block;
-(void)cancelButtonTitle:(NSString *)title complished:(CancelBlock)block;
@end`

这是CustomAlertView.m的代码

#import "CustomAlertView.h"
#import "AppDelegate.h"
@interface CustomAlertView ()
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UIButton *okButton;
@property (weak, nonatomic) IBOutlet UIButton *cancelButton;


//对于Block 使用copy
@property(nonatomic,copy) SureButtonBlock okBlock;
@property(nonatomic,copy) CancelBlock cancelBlock;
@end
@implementation CustomAlertView

//类方法里面不能直接访问属性变量和实例方法
+(instancetype)alertViewWithImageName:(NSString *)imageName title:(NSString *)title style:(kAlertViewStyle)style{
    //1.读取xib文件
    NSArray *nibsArray = [[NSBundle mainBundle]loadNibNamed:@"CustomAlertView" owner:nil options:nil];
    //2.根据用户的style读取对应的View
    CustomAlertView *alertView = [CustomAlertView new];
    if (style == kAlertViewStyleUpAndDown) {
    alertView = [nibsArray objectAtIndex:0];
    }else{
    alertView = [nibsArray objectAtIndex:1];
        
    }
    if (imageName != nil) {
        alertView.iconImageView.image = [UIImage imageNamed:imageName];
    };
    if (title != nil) {
        alertView.titleLabel.text = title;
    };
    return alertView;
}

-(void)show{
    //找到当前界面的视图
    //将这个视图添加到当前界面的最外层
//    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
//    [app.window  addSubview:self];
    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
    [app.window.rootViewController.view addSubview:self];
    
}
-(void)showInView:(UIView *)superView{
    [superView addSubview:self];
}

-(void)dismiss{
    [self removeFromSuperview];
}

- (IBAction)okButtonDidClicked:(UIButton *)sender {
    [self dismiss];
    self.okBlock();
}
- (IBAction)cancelButtonDidClicked:(UIButton *)sender {
    self.cancelBlock();
    [self dismiss];
}

-(void)okButtonTitle:(NSString *)title complished:(SureButtonBlock)block{
    [_okButton setTitle:title forState:UIControlStateNormal];
    self.okBlock = block;
}
-(void)cancelButtonTitle:(NSString *)title complished:(CancelBlock)block{
    [_cancelButton setTitle:title forState:UIControlStateNormal];
    self.cancelBlock = block;
}

6.外部使用的例子

CustomAlertView *alertView = [CustomAlertView alertViewWithImageName:@"gou" title:@"yes" style:kAlertViewStyleLeftAndRight];
    
    [alertView okButtonTitle:@"发送" complished:^{
        NSLog(@"111");
    }];
    [alertView cancelButtonTitle:@"" complished:^{
    }];
    [alertView show];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOS 自定义UIAlertController 的相关文章

  • 有没有办法检测 iOS 设备进入睡眠模式(屏幕变黑时)时的事件?

    我想检测两个事件 设备被锁定 解锁 设备进入睡眠状态并且屏幕变黑 我在这里实现的第一个目标是 有没有办法检查 iOS 设备是否锁定 解锁 https stackoverflow com questions 14229955 is there
  • 每次 UIScrollView 释放时都会发生内存泄漏

    在我的应用程序中 我有一个滚动视图和四个表格视图 每次拖动然后释放时 我都会泄漏 48 字节 这确实很重要 正如您所看到的 两组泄漏都有相同的来源 有人见过这样的泄漏吗 Edit 1 当我单击泄漏旁边的箭头时 我会得到泄漏的以下信息 您所看
  • 如何在 iOS Swift 中获取来电的电话号码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的应用程序中获取来电者的电话号码 请有人迅速为我提供这个问题的解决方案 您将永远无法获得来电的电话号码 因为这是用户的私人数据
  • 我在 NSDateComponentsFormatter 上的 allowedFractionalUnits 上做错了什么?

    基本上我想要的是获取仅以小时表示的时间间隔的值 而不将其四舍五入为完整小时 使用NSDateComponentFormatter https developer apple com library ios documentation Fou
  • 当视口设置为 user-scalable=no 时,iOS/移动 Safari 仍然会缩放?检查辅助功能设置!

    这个特定的 Mobile Safari 看似不可能且未记录 问题让我今天坚持了很长一段时间 当我弄清楚它时 我正要在这里发布一个有关它的问题 问题 虽然我设置了我的 iPad 网络应用程序仍然允许手动缩放 在浏览器中捏合 但只能在我的 iP
  • 如何使用libxml解析来解析xml数据

    这是一个我想使用libxml解析来解析的xml结构 我如何获取 campaign 标签的属性值 即ID对于 图像 标签 即url and size 如果我使用这些值 我可以提取 code 标签和 name 标签的值 static const
  • 如何判断handleOpenURL是在应用程序启动时调用还是在应用程序运行时调用?

    由于事件的顺序略有不同 具体取决于这两个场景中的哪一个正在进行 我希望能够区分出区别 有什么建议么 你不应该使用handleOpenURL因为它已被弃用 相反 使用application openURL sourceApplication
  • iTunes Connect 中缺少应用内购买部分

    我有一个应用程序处于准备提交状态 我还有该应用程序的应用程序内购买项目 上周我将它们链接到我的应用程序并提交以供审核 周末 开发商拒绝了它 现在我想重新提交修复后的版本 但 IAP 部分完全丢失 我怎样才能让它再次可见 我遇到过同样的问题
  • 如何检测应用程序是否在越狱设备上运行? [复制]

    这个问题在这里已经有答案了 我刚刚发布了适用于 iOS 的应用程序 但我不确定如何确保我的应用程序不被越狱者使用 我可以采取措施阻止我的应用程序在越狱设备上运行吗 您可以通过代码检测应用程序是否在越狱设备上运行 通过这种方式 您可以弹出警报
  • Xcode 6 Bug:Interface Builder 文件中的未知类

    我升级到 Xcode 6 beta 4 现在我的应用程序不断崩溃并显示以下消息 Interface Builder 文件中存在未知的类 X 它崩溃是因为据说 Xcode 找不到我在故事板中链接的自定义类 但它显示它们在 Xcode 界面中正
  • Swift 在调试和发布模式下的行为不同

    不确定这是否是 Swift XCode 或 Alamofire 的问题 但我认识到我的混合 Swift Objc 应用程序中不同地方的奇怪行为 它只发生在用 Swift 编写并使用闭包 网络的部分 这是发生这种情况的示例代码 Alamofi
  • 使用 WebRTC 构建 iOS 本机应用程序

    我找了4天了 还是没找到 我构建了所有库并将其集成到我的自定义项目中 但我不知道应该采取哪些步骤才能使其正常工作 我在代码示例 解释中发现的唯一内容是 tech appear in 2015 05 25 Getting started wi
  • 快速重写函数错误

    我有一个结构 struct ErrorResultType ErrorType var description String var code Int 和一个协议 protocol XProtocol func dealError erro
  • 自定义 UITableViewCell 和 setSelected:animated 上的动画:

    我有一个UITableViewCell在drawRect 方法中进行绘制的子类 整个矩形是自定义绘制的 包括背景 我能够获得非常复杂的单元格 同时保持滚动非常平滑 我的问题 我打电话 table deselectRowAtIndexPath
  • 如何在谷歌地图中绘制多个点之间的路线?

    我已经在我的应用程序中实现了谷歌地图 并且我需要在地图上标记几个点 我能够用标记标记它们 但我面临的问题是尝试绘制所有这些点之间的路径 我尝试使用折线 但它只是在 A 点和 B 点之间绘制一条直线 我还尝试了谷歌地图 DirectionsA
  • 使用 RestKit 对象映射空响应

    感谢在这里帮忙 https stackoverflow com questions 9743155 restkit mapping with an array of complex objects在 RestKit 邮件列表上 我已经能够解
  • 快速检查网络速度

    我想从我的 swift 应用程序检查网络速度 我发现很多帖子描述了Reachability特别是查找连接是否可达以及是 WIFI 连接还是 WWAN 连接的方法 我的问题 是否可以检测 WWAN 的类型 2G 3G 4G 你可以用以下命令检
  • iOS设备和iPhone模拟器内存​​组织的差异

    我正在尝试使用 Xcode 4 3 3 和 iPhone 5 1 模拟器开发一个应用程序 当我在模拟器上运行这个应用程序时 我没有收到任何警告 并且它运行得很好 但是 当我尝试在 iOS 设备上执行此操作时 我收到一条警告消息 收到内存警告
  • 我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

    在我的项目中 我将所有私有 swift 2 3 文件迁移到 swift 3 我想使用用 swift 2 3 编写的遗留框架 直到它们有 swift 3 版本 我尝试添加 使用旧版 Swift 版本 是 清除 构建我的项目 但我仍然遇到一些麻
  • Xcode 9.2 的正确应用程序图标 (appicon) 命名约定是什么?

    我从以下网站下载了一组 23 个 iOS 应用程序图标https makeappicon com https makeappicon com具有以下文件名 email protected cdn cgi l email protection

随机推荐

  • Cache-主存效率问题

    本文主要明确在软考中经常遇到的缓存效率问题 第零 xff0c 明确一个问题 xff1a 如果Cache不命中时 xff0c 不同的系统有不同的应对策略 一是直接从主存中拿走待取数据 xff0c 它的时间消耗仅仅是一个访问主存周期 二是把待取
  • filezilla 严重文件传输错误 550permission denied

    问题描述 xff1a FileZilla工具使用ftp账户 xff0c 密码 xff0c 端口21 xff0c 快速链接到自己搭建的外网ftp服务器 xff0c 提示登录成功 xff0c 选择本地文件 xff0c 右键文件上传 xff0c
  • ubuntu与windows互传文件的3种方法

    一般在进行编程作业的时候 xff0c 我们会采用 开发在Windows中编辑源代码 xff0c 在linux中编译 执行源代码 这往往需要需要将在Windows下编辑好的源代码上传到linux系统种进行编译 怎么来进行上传呢 xff1f 其
  • ubuntu下如何设置环境变量

    一 设置环境变量的三种方法 1 1 临时设置 export PATH 61 home yan share usr local arm 3 4 1 bin PATH 1 2 当前用户的全局设置 打开 bashrc xff0c 添加行 xff1
  • ssh免密登录设置方法

    1 前提条件 主机A xff0c 用户名为aris xff0c IP地址为192 168 1 1主机B xff0c 用户名为leon xff0c IP地址为192 168 1 2这两台主机上均安装了SSH服务器 xff0c 且已经打开ssh
  • 软考高项你想要的全在这

    2021年准备参加软考获取高级职业技术资格认证的小伙伴咱们约起吧 xff1f xff01 自软考系列文章发表之后有很多准备参加软考的小伙伴加我微信 xff0c 关注我的微博 xff0c 也有很多因此成了好朋友 xff0c 甚至是同事 自前年
  • Makefile语法及通用模板

    简介 xff1a 本文主要讲解了在开发常规项目时 xff0c 用于自动化部署生成目标文件的Makefile 对其包含的主要语法进行了讲解 xff0c 最后给出了一个项目通用的Makefile模板 xff0c 以帮助大家理解 1 Makefi
  • ubuntu镜像源的配置

    摘要 xff1a 你是否遇到过按照网上教程更改了自己的镜像源之后 xff0c 貌似还是不兼容 xff0c 许多安装包还是下不了 xff1f 其实不是他们写的教程有错误 xff0c 而是你没用根据自己使用的ubuntu的版本去正确配置镜像源
  • Linux中与“内核模块”相关的数据结构

    摘要 本文详细解释了linux中与模块相关的内核数据结构 xff0c 便于大家在学习理解内核源码或驱动编程中理解相应代码和思想 三 内核模块相关的数据结构 目录 THIS MODULE宏module结构体module use 3 1 THI
  • Linux内核中与“文件系统”相关的数据结构

    文件系统相关的数据结构 4 1 file结构体 文件结构体代表一个打开的文件 xff0c 系统中的每个打开的文件在内核空间都有一个关联的struct file 它由内核在打开文件时创建 xff0c 并传递给在文件上进行操作的任何函数 在文件
  • 【可解释AI】图神经网络的可解释性方法及GNNexplainer代码示例

    图神经网络的可解释性方法及GNNexplainer代码示例 GNNExplainerIntroductionModelSingle instance explanations xff08 Explanation via Structural
  • 文本编辑器VI命令详解

    目录 一 xff1a 文本编辑器概述 1 文本编辑器含义 2 文本编辑器的作用 3 Linux中最常见的文本编辑器 二 vi编辑器的工作模式 1 vi编辑器的工作模式 2 各模式之间的切换 三 xff1a 命令模式概述 1 命令模式常用操作
  • Linux中与“内核安全”相关的数据结构

    五 内核安全相关数据结构 5 1 security operations结构体 这是一个钩子函数的指针数组 xff0c 其中每一个数组元素都是一个SELINUX安全钩子函数 xff0c 在2 6以上的内核中 xff0c 大部分涉及安全控制的
  • 洛谷 P3366 【模板】最小生成树

    题目描述 如题 xff0c 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 输入输出格式 输入格式 xff1a 第一行包含两个整数N M xff0c 表示该图共有N个结点和M条无向边 xff
  • 关于网站最近出现504错误的总结,too open many files in system

    如果你有耐心看完这篇文章 xff0c 也许会给你带来真正的益处 网站出现504错误 xff0c 如果你用阿里云CDN的话还会报 504 Gateway Time out The gateway did not receive a timel
  • Manjaro21安装VNC,Win10远程连接manjaro桌面

    manjaro安装tigervnc xff0c win10使用VNC viewer TigerVNC 简体中文 ArchWiki archlinux org https wiki archlinux org title TigerVNC E
  • Proxmox虚拟环境搭建

    一 Proxmox VE简介 ProxmoxVE 是一个完整的 开源的企业虚拟化服务器管理平台 它在单个平台上紧密集成了 KVM 管理程序和 Linux 容器 LXC 软件定义的存储和网络功能 通过集成的基于 web 的用户界面 xff0c
  • HEX2DEC存储过程实现

    数据库当前有十进制转换为十六进制的函数hex 函数 xff0c 却没有十六进制转换为十进制的函数 xff0c 只能自己定义一个hex2dec xff0c 存储过程如下 xff1a span class token keyword drop
  • SQLite数据类型引起的问题——全数字字符串使用varchar出现错误

    问题 xff1a 项目中需要把某些数据保存到Android的数据库中 xff0c 因为保存的字符串全部为数字形式 xff0c SQLite把部分字符串自动转化为了科学技术法导致数据显示异常 xff0c 同时还把一些开头为0的字符串自动去掉了
  • IOS 自定义UIAlertController

    自定义UIAlertController xff1a 首先展示效果图 1 创建一个新的类来管理弹出的视图 继承于UIView 2 传建一个xib文件来自定义弹出视图 xff08 注意创建过后一定要将xib的class关联 xff09 3 在