一个 API,为 UIAlertView 的代理引入本地作用域,添加了对每个 UIAlertView 多个代理和块的支撑。
UIAlertView 通常在控制器中使用,设置为它的代理。由于控制器比 UIAlertView 持续得更久,所以通过其代理的弱属性提供了便利的工作程序。
此外,控制器被设计为响应每个按钮点击索引的回调。这通常会导致回调中的长列表 if 语句。
VLBAlertViewDelegate 旨在解决这些问题。
VLBAlertViewDelegate 被分配了与按钮索引的谓词以及一个关联的块,如果谓词评估为真,则执行该块。
VLBAlertViewDelegate 故意与其块创建了一个保留周期,该周期在 clickedButtonAtIndex 事件上打破,与其 UIAlertView 具有相等的生命周期,从而实现本地作用域。
可以组合 VLBAlertViewDelegate(s),以响应不同的 clickedButtonAtIndex 事件。
1.0 初始版本。支持块、多个代理分配、局部作用域。
id<UIAlertViewDelegate> alertViewDelegateOnOkDismiss = [VLBAlertViews newAlertViewDelegateOnOkDismiss];
UIAlertView *alertView = [VLBAlertViews newAlertViewWithOk:title message:message];
alertView.delegate = alertViewDelegateOnOkDismiss;
[alertView show];
id<UIAlertViewDelegate> alertViewDelegateOnOkDismiss =
[VLBAlertViews newAlertViewDelegateOnOkDismiss];
id<UIAlertViewDelegate> alertViewDelegateOnCancelDismiss =
[VLBAlertViews newAlertViewDelegateOnCancelDismiss];
id<UIAlertViewDelegate> delegate = [VLBAlertViews all:@[alertViewDelegateOnOkDismiss, alertViewDelegateOnCancelDismiss]];
UIAlertView *alertView = [VLBAlertViews newAlertViewWithOkAndCancel:title message:message];
alertView.delegate = delegate;
[alertView show];
id<UIAlertViewDelegate> alertViewDelegateOnOk = [VLBAlertViews newAlertViewDelegateOnOk:^(UIAlertView *alertView, NSInteger buttonIndex) {
}];
UIAlertView *alertView = [VLBAlertViews newAlertViewWithOk:title message:message];
alertView.delegate = alertViewDelegateOnOk;
[alertView show];
TBD
没有测试来保护代码。
VLBAlertViews 根据 MIT 许可证发布
版权所有(C) 2013, www.verylargebox.com
特此授予任何获得此软件和辅助文档副本(“软件”)的个人在不受限制的情况下处理软件的权利,包括无限制使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及准许任何向软件提供的人按本协议行事的权利,但遵守以下条件
上述版权声明和本许可声明应包含在软件所有副本或实质性部分中。
软件按“现状”提供,不提供任何类型的保证,无论是明示的、默示的,还是针对 merchantability、特定目的适用性或非侵权的保证。在任何情况下,作者或版权所有者均不对任何主张、损害或其他责任承担责任,无论源于、因或与软件、使用或其他软件处理有关的行为,包括但不限于合同行为、侵权行为或其他行为。