iOS开发:创建独立的警告视图

移动开发 iOS
我们向用户提供了选项,并且需要这些选项,可以通过实现协议里的方法。我们通过以下两个方法判断选择:硬编码的方式对按钮的索引做比较,或用switch语句;通过-buttonTitleAtIndex方法,比较字符串。

UIAlertView 的基本用法就不再说了,如果我们向用户提供了选项,并且需要这些选项,可以通过实现协议里的方法。我们通过以下两个方法判断选择:

1,硬编码的方式对按钮的索引做比较,或用switch语句。

2,通过-buttonTitleAtIndex方法,比较字符串。

如果警告视图较多,那就不只是判断是那个按钮被按下,而是那个警告视图的那个按钮了。

我们使用Block能让这个过程更加漂亮。

XYAlertView.h:

  1. #import <UIKit/UIKit.h>   
  2.     typedef void(^XYAlertBlock)(void); 
  3.     @interface XYAlertView : UIAlertView<UIAlertViewDelegate>{ 
  4.     } 
  5.     + (void)showWithTitle:(NSString *)title 
  6.                   message:(NSString *)message 
  7.               buttonTitle:(NSString *)buttonTitle; 
  8.     + (void)showWithTitle:(NSString *)title 
  9.                   message:(NSString *)message 
  10.               cancelTitle:(NSString *)cancelTitle 
  11.               cancelBlock:(XYAlertBlock)cancelBlock 
  12.                otherTitle:(NSString *)otherTitle 
  13.                otherBlock:(XYAlertBlock)otherBlock; 
  14.     @end 

XYAlertView.m:

  1. #import "XYAlertView.h"   
  2.     @interface XYAlertView () 
  3.     @property (nonatomic, copy) XYAlertBlock cancelBlock; 
  4.     @property (nonatomic, copy) XYAlertBlock otherBlock; 
  5.     @property (nonatomic, copy) NSString *cancelButtonTitle; 
  6.     @property (nonatomic, copy) NSString *otherButtonTitle; 
  7.     - (id)initWithTitle:(NSString *)title 
  8.                 message:(NSString *)message 
  9.             cancelTitle:(NSString *)cancelTitle 
  10.              ancelBlock:(XYAlertBlock)cancelBolck 
  11.              otherTitle:(NSString *)otherTitle 
  12.              otherBlock:(XYAlertBlock)otherBlock; 
  13.     @implementation XYAlertView 
  14.     @synthesize cancelBlock = _cancelBlock; 
  15.     @synthesize otherBlock = _otherBlock; 
  16.     @synthesize cancelButtonTitle = _cancelButtonTitle; 
  17.     @synthesize otherButtonTitle = _otherButtonTitle; 
  18.     + (void)showWithTitle:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)buttonTitle{ 
  19.         [self showWithTitle:title message:message cancelTitle:buttonTitle cancelBlock:nil otherTitle:nil otherBlock:nil]; 
  20.     } 
  21.     + (void)showWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle cancelBlock:(XYAlertBlock)cancelBlock otherTitle:(NSString *)otherTitle otherBlock:(XYAlertBlock)otherBlock{ 
  22.         [[[self alloc] initWithTitle:title message:message cancelTitle:cancelTitle ancelBlock:cancelBlock otherTitle:otherTitle otherBlock:otherBlock] show]; 
  23.     } 
  24.     - (id)initWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle ancelBlock:(XYAlertBlock)cancelBolck otherTitle:(NSString *)otherTitle otherBlock:(XYAlertBlock)otherBlock{ 
  25.         if ((self = [super initWithTitle:title message:message delegate:self cancelButtonTitle:cancelTitle otherButtonTitles:otherTitle, nil])) { 
  26.             if (cancelBolck == nil && otherBlock == nil) { 
  27.                 self.delegate = nil; 
  28.             } 
  29.             self.cancelButtonTitle = cancelTitle; 
  30.             self.otherButtonTitle = otherTitle; 
  31.             self.cancelBlock = cancelBolck; 
  32.             self.otherBlock = otherBlock; 
  33.         } 
  34.         return self; 
  35.     } 
  36.     #pragma mark - 
  37.     #pragma mark UIAlertViewDelegate 
  38.     - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
  39.         NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex]; 
  40.         if ([buttonTitle isEqualToString:self.cancelButtonTitle]) { 
  41.             if (self.cancelBlock) { 
  42.                 self.cancelBlock(); 
  43.             } 
  44.         }else if ([buttonTitle isEqualToString:self.otherButtonTitle]){ 
  45.             if (self.otherBlock) { 
  46.                 self.otherBlock(); 
  47.             } 
  48.         } 
  49.     } 
  50.     @end 

 

源代码下载:http://down.51cto.com/data/835995

责任编辑:闫佳明 来源: oschina
相关推荐

2013-06-14 13:50:28

iOS开发移动开发警告视图

2013-03-29 11:06:24

iOS开发滚动视图UIScrol

2011-08-09 15:17:07

iOS开发

2014-09-02 10:55:25

iOS开发视图切换

2010-11-16 10:42:45

Oracle创建视图

2012-05-10 09:08:07

iOS独立开发者

2010-11-11 17:20:51

SQL Server创

2011-04-19 10:38:53

Xcode 4MacRubyiOS

2013-07-21 18:09:21

iOS开发ASIHttpRequ创建和执行reques

2014-03-14 13:36:19

独立游戏经验

2015-08-05 10:43:40

开发者开发工具

2015-08-05 14:25:26

开发者开发工具

2009-04-07 10:45:43

Oracle视图创建

2018-07-25 14:01:47

iOS开发苹果

2012-05-13 12:43:50

iOS

2012-05-02 23:04:38

iOS

2015-01-20 17:15:55

iOS源码滚动视图

2011-07-08 14:51:34

iPhone 视图

2022-07-26 08:02:33

Android微信程序

2010-04-19 10:08:46

Oracle视图
点赞
收藏

51CTO技术栈公众号