免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

ios uialertviewcontroller封装

UIAlertViewController是iOS开发中常用的一个弹窗控件,可以用来显示提示信息、警告信息、确认信息等等。在实际开发过程中,我们可能需要多次使用UIAlertViewController,为了方便代码复用,我们可以将UIAlertViewController进行封装,以便在需要使用时直接调用。

UIAlertViewController的封装原理主要是通过创建一个继承自UIAlertViewController的类,并在该类中编写需要的方法和属性。在需要使用UIAlertViewController时,我们只需要创建该类的实例,然后调用其中的方法即可。

下面,我们来详细介绍如何进行UIAlertViewController的封装。

1. 创建一个继承自UIAlertViewController的类

首先,我们需要创建一个继承自UIAlertViewController的类,命名为CustomAlertViewController。在该类中,我们可以定义需要的属性和方法。

```

@interface CustomAlertViewController : UIAlertController

@property (nonatomic, copy) void(^confirmBlock)(void);

@property (nonatomic, copy) void(^cancelBlock)(void);

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message confirmTitle:(NSString *)confirmTitle cancelTitle:(NSString *)cancelTitle;

@end

```

在上面的代码中,我们定义了三个属性和一个初始化方法。其中,confirmBlock和cancelBlock是两个回调块,用来处理用户点击确认和取消按钮的操作。initWithTitle: message: confirmTitle: cancelTitle:方法用来初始化UIAlertViewController的标题、消息、确认按钮和取消按钮的标题。

2. 实现初始化方法

在CustomAlertViewController.m文件中,我们需要实现initWithTitle: message: confirmTitle: cancelTitle:方法。在该方法中,我们可以通过调用父类的initWithTitle: message: preferredStyle:方法来初始化UIAlertViewController,并设置确认和取消按钮的事件。

```

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message confirmTitle:(NSString *)confirmTitle cancelTitle:(NSString *)cancelTitle {

self = [super initWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];

if (self) {

UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:confirmTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

if (self.confirmBlock) {

self.confirmBlock();

}

}];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

if (self.cancelBlock) {

self.cancelBlock();

}

}];

[self addAction:confirmAction];

[self addAction:cancelAction];

}

return self;

}

```

在上面的代码中,我们创建了两个UIAlertAction对象,分别用来表示确认和取消按钮,并设置它们的事件。然后,我们调用了addAction:方法,将两个UIAlertAction对象添加到UIAlertViewController中。

3. 实现回调块

在CustomAlertViewController类中,我们定义了两个回调块confirmBlock和cancelBlock,用来处理用户点击确认和取消按钮的操作。在实际使用中,我们需要对这两个回调块进行实现。

```

- (void)showWithConfirmBlock:(void (^)(void))confirmBlock cancelBlock:(void (^)(void))cancelBlock {

self.confirmBlock = confirmBlock;

self.cancelBlock = cancelBlock;

UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;

[rootVC presentViewController:self animated:YES completion:nil];

}

```

在上面的代码中,我们定义了一个名为showWithConfirmBlock:cancelBlock:的方法,该方法用来显示UIAlertViewController并设置确认和取消按钮的事件。在该方法中,我们将confirmBlock和cancelBlock赋值给CustomAlertViewController类中定义的两个回调块,并获取当前应用程序的根视图控制器,然后调用presentViewController:animated:completion:方法显示UIAlertViewController。

4. 使用自定义弹窗

在实际使用CustomAlertViewController时,我们只需要创建该类的实例,并调用showWithConfirmBlock:cancelBlock:方法即可。

```

CustomAlertViewController *alertVC = [[CustomAlertViewController alloc] initWithTitle:@"提示" message:@"确定要退出登录吗?" confirmTitle:@"确定" cancelTitle:@"取消"];

[alertVC showWithConfirmBlock:^{

// 处理确认按钮的操作

} cancelBlock:^{

// 处理取消按钮的操作

}];

```

在上面的代码中,我们创建了一个CustomAlertViewController的实例,设置了标题、消息、确认按钮和取消按钮的标题,然后调用showWithConfirmBlock:cancelBlock:方法显示该弹窗。在回调块中,我们可以编写处理确认和取消按钮事件的代码。

总结

通过对UIAlertViewController进行封装,我们可以方便地复用该控件,并且可以将其与处理事件的代码分离,使得代码更加清晰和易于维护。在实际开发中,我们可以根据需要对CustomAlertViewController进行扩展,增加更多的属性和方法,以满足不同的需求。


相关知识:
获得appstore中app的ipa包
在iOS设备上下载应用程序通常是通过App Store进行的。但是有时候我们可能需要获取某个应用程序的IPA包,这可能是因为我们需要在不同的设备上安装同一个应用程序,或者因为我们需要将应用程序安装在没有App Store的设备上。在这篇文章中,我们将介绍如
2023-04-06
exe文件打包
EXE文件是Windows操作系统中常见的可执行文件,它包含了一系列的二进制代码以及资源文件,可以被计算机直接执行。在开发软件时,为了方便用户使用,我们通常需要将程序打包成EXE文件,这样用户就可以直接运行程序而不需要安装其他依赖项。下面我们将介绍EXE文
2023-04-06
exe嵌入 工具
EXE嵌入是一个常见的技术,它可以将一个程序或文件嵌入到另一个程序中,使得目标程序可以运行嵌入的程序或文件。这种技术在软件开发和加密保护中得到了广泛的应用,因为它可以使得程序更加灵活和安全。EXE嵌入的实现原理是将一个程序或文件添加到另一个程序的资源中,然
2023-04-06
ios免签名封装
iOS免签名封装指的是将iOS应用程序打包成一个IPA文件,而不需要使用Apple官方的签名证书进行签名,从而达到绕过苹果官方限制的目的。这种方法主要是针对非企业开发者或小型开发团队,在没有开发者账号或者账号被封禁的情况下,可以将应用程序发布到App St
2023-04-06
dz论坛app
DZ论坛app是一款基于Discuz!论坛系统开发的移动应用程序,旨在提供用户更加便捷、快速的论坛交流体验。下面将从原理和详细介绍两个方面来介绍DZ论坛app。一、原理DZ论坛app的原理是基于Discuz!论坛系统进行开发的。Discuz!是一款国内知名
2023-04-06
PHP h5封装iOS在线
在移动端开发中,有时需要调用一些原生iOS的功能,比如相册、相机、通讯录等等。为了实现这些功能,我们可以使用PHP h5封装iOS在线来实现。这里我们将详细介绍这个原理。首先,我们需要在iOS端使用WebView来加载网页,然后通过JavaScript与原
2023-04-06
网络播放器app全屏设置
网络播放器App全屏设置是现代手机应用程序中非常常见的功能之一。全屏设置是指在播放视频或音频时,将屏幕填满,隐藏系统的状态栏和导航栏,让用户获得更好的观看或听音体验。实现全屏设置的原理是通过修改应用程序的布局,将视频或音频画面的大小设置为屏幕大小,同时隐藏
2023-04-06
android 网页app
Android 网页 App 是一种基于 WebView 的应用程序,通过加载网页来提供服务。WebView 是 Android 系统提供的一个控件,它可以嵌入到应用程序中,显示网页内容。Android 网页 App 可以通过 WebView 来加载网页,
2023-04-06
apk软件开发打包
APK是Android应用程序包的缩写,是Android应用程序的安装包格式。APK包含应用程序的所有代码、资源和清单文件,以及被打包的所有库和组件。APK文件是Android系统的基本安装包格式,它可以在Android设备上安装和运行应用程序。APK软件
2023-04-06
app转ipa工具
在iOS开发中,我们通常会用Xcode来编写和调试应用程序,而在应用程序完成后,我们需要将其打包成ipa文件进行发布或测试。但是,有些开发者可能没有Mac电脑或者没有安装Xcode,他们也想打包ipa文件,这时候就需要使用app转ipa工具。App转IPA
2023-04-06
springboot打包apk
Springboot是一个轻量级的Java开发框架,它的优点在于快速、简单、灵活,可以快速搭建一个Java应用,并且可以快速打包成jar包进行部署。但是,如何将Springboot应用打包成apk安装包呢?下面将介绍Springboot打包apk的原理和详
2023-04-06
androiddeveloper
Android开发者是指专门从事Android应用程序开发的人员,他们使用Java编程语言和Android SDK开发出可以在Android设备上运行的应用程序。Android开发者需要具备扎实的Java编程基础和Android应用程序开发的相关知识,同时
2023-04-06