IDMAlertViewManager 是开发用来帮助您减轻处理不同优先级弹窗的问题的,并且专注于一次性只显示一个弹窗,将默认网络错误信息集中在一个类中。
简单地将 pod 'IDMAlertViewManager'
添加到您的 Podfile 中。另外,您还可以将 Classes
文件夹中的文件复制到您的项目中。
我们建议将其导入到项目的 .pch
中以方便访问,您也可以使用 UIAlertViewManager 在每个类中进行导入。
IDMAlertViewManager 完全覆盖了 UIAlertView
的使用。实际上,您不应再调用任何 UIAlertView
。让我们为您处理。
您可能想要做的第一件事是为连接错误警报设置默认的 title
和 message
。将其追加到您的 AppDelegate
中的 applicationDidFinishLaunching:
方法底部
[IDMAlertViewManager setDefaultConnectionErrorTitle:@"Network Connectivity Error"
message:@"Couldn't reach the server. Please, try again."];
// You may also want to provide other buttons to dismiss the window:
[IDMAlertViewManager setDefaultConnectionErrorTitle:@"Network Connectivity Error"
message:@"Couldn't reach the server. Please, try again."
buttons:@[@"Cancel", @"Refresh"]];
要显示默认的连接错误弹窗,必须调用 [IDMAlertViewManager showDefaultConnectionFailureAlert]
。或者您可以发送块以在成功或失败时执行
[IDMAlertViewManager showDefaultConnectionAlertWithSuccess:^(NSUInteger selectedIndex) {
// Something to do when the user dismisses the alert view
} failure:^(NSError *error) {
// Usually called when another alert with higher priority must appear.
// May also mean that the alert was dismissed programmatically.
// You can find the error cause comparing error.code against the enum IDMAlertError
}];
连接错误警报始终使用默认优先级(IDMAlertPriorityMedium
)。IDMAlertViewManager 将 OK
添加为默认关闭按钮的文本,但您可以使用 [IDMAlertViewManager setDefaultDismissalButton:@"Cancel"]
进行更改。
可用最完整的方法是
[IDMAlertViewManager showAlertWithTitle:@"Title"
message:@"Message"
priority:IDMAlertPriorityHigh
success:^(NSUInteger selectedIndex) {
// Do something after dismissing the alert
} failure:^(NSError *error) {
// Oops! Something went wrong!
} buttons:@[@"Yes", @"No"]];
您还可以提供要显示的根据优先级显示的 UIAlertView
实例
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[IDMAlertViewManager showAlertView:alertView priority:IDMAlertPriorityMedium];
有四个主要优先级,但可以提供任何无符号整数将优先级设置给弹窗。值越低,优先级越高。
如果屏幕上有一个弹窗,另一个优先级更高的弹窗尝试出现,当前弹窗将被关闭,调用其 errorBlock
,新的弹窗将占据屏幕的位置。将只显示一个弹窗。
如果一个与现有弹窗具有相同或更低优先级的弹窗尝试出现在顶部,它将不会显示,如果没有设置 nil,其 errorBlock
将被调用。
以下是从 IDMAlertPriority
枚举中预定义的优先级。
优先级 | 值 | 含义 |
---|---|---|
IDMAlertPriorityDEFCON | 0 | 最高优先级。仅在紧急情况下使用。 |
IDMAlertPriorityHigh | 10 | 用于重要但非关键警报。 |
IDMAlertPriorityMedium | 25 | 默认优先级。如果没有设置,将分配此值。在连接错误警报中使用。 |
IDMAlertPriorityLow | 50 | 低优先级警报。 |
您可以检查完整文档以获取更多信息。
IDMAlertViewManager的测试类是使用Apple的新框架XCTest编写的,因此它只针对iOS 7进行测试,因为早期版本(<= iOS 6.1)与XCTest不兼容。
然而,IDMAlertViewManager不使用iOS 5.1之前的任何内容,因此它可以成功运行在从iOS 5.1到更高版本的任何iOS版本上。但请注意,任何进一步的开发都只能在iOS 7上进行测试!
IDMAlertViewManager受MIT许可证许可
版权所有(c) 2013 Ideais Mobile (http://www.ideais.com.br/divisao-mobile/)
在此特此授予任何获得本软件及相关文档文件(“软件”)副本的任何人完全免费的许可,以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许软件接受人做上述事项,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵犯性保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任(无论因合同、侵权或其他方式引起,源自、出于或与软件或软件的使用或其他交易有关)负责。