精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

IOS 4中Block實戰之UIActionSheet

移動開發 iOS
熟悉函數指針的朋友對Block不會感冒的,因為它們實質是一樣的,只是叫清一不樣。今天將實戰BLOCK,我們將封裝一個支持Block的UIActionSheet。

IOS 4Block實戰之UIActionSheet是本文介紹的內容,BlockIOS 4的新東西,有了它,源碼的邏輯將更清楚,代碼的可讀性將提高。熟悉函數指針的朋友對Block不會感冒的,因為它們實質是一樣的,只是叫清一不樣。今天將實戰BLOCK,我們將封裝一個支持BlockUIActionSheet。好了廢話少說,直接上代碼:

  1. PLActionSheet.h  
  2.  
  3. #import <UIKit/UIKit.h>     
  4.     
  5. /**   
  6.  * A simple block-enabled API wrapper on top of UIActionSheet.   
  7.  */    
  8. @interface PLActionSheet : NSObject <UIActionSheetDelegate> {    
  9. @private    
  10.     UIActionSheet *_sheet;    
  11.     NSMutableArray *_blocks;    
  12. }    
  13.     
  14. - (id) initWithTitle: (NSString *) title;    
  15.     
  16. - (void) setCancelButtonWithTitle: (NSString *) title block: (void (^)()) block;    
  17. - (void) addButtonWithTitle: (NSString *) title block: (void (^)()) block;    
  18.     
  19. - (void) showInView: (UIView *) view;    
  20.     
  21. @end    
  22. #import <UIKit/UIKit.h> 
  23.  
  24. /**  
  25.  * A simple block-enabled API wrapper on top of UIActionSheet.  
  26.  */  
  27. @interface PLActionSheet : NSObject <UIActionSheetDelegate> {  
  28. @private  
  29.     UIActionSheet *_sheet;  
  30.     NSMutableArray *_blocks;  
  31. }  
  32.  
  33. - (id) initWithTitle: (NSString *) title;  
  34.  
  35. - (void) setCancelButtonWithTitle: (NSString *) title block: (void (^)()) block;  
  36. - (void) addButtonWithTitle: (NSString *) title block: (void (^)()) block;  
  37.  
  38. - (void) showInView: (UIView *) view;  
  39.  
  40. @end  
  41. PLActionSheet.m  
  42.  
  43. #import "PLActionSheet.h"     
  44.     
  45. @implementation PLActionSheet    
  46.     
  47. - (id) initWithTitle: (NSString *) title {    
  48.     if ((self = [super init]) == nil)    
  49.         return nil;    
  50.         
  51.     /* Initialize the sheet */    
  52.     _sheet = [[UIActionSheet alloc] initWithTitle: title delegate: self cancelButtonTitle: 
  53. nil destructiveButtonTitle: nil otherButtonTitles: nil];    
  54.     
  55.     /* Initialize button -> block array */    
  56.     _blocks = [[NSMutableArray alloc] init];    
  57.     
  58.     return self;    
  59. }    
  60.     
  61. - (void) dealloc {    
  62.     _sheet.delegate = nil;    
  63.     [_sheet release];    
  64.     
  65.     [_blocks release];    
  66.     
  67.     [super dealloc];    
  68. }    
  69. - (void) setCancelButtonWithTitle: (NSString *) title block: (void (^)()) block {    
  70.     [self addButtonWithTitle: title block: block];    
  71.     _sheet_sheet.cancelButtonIndex = _sheet.numberOfButtons - 1;    
  72. }    
  73.     
  74. - (void) addButtonWithTitle: (NSString *) title block: (void (^)()) block {    
  75.     [_blocks addObject: [[block copy] autorelease]];    
  76.     [_sheet addButtonWithTitle: title];    
  77. }    
  78.     
  79. - (void) showInView: (UIView *) view {    
  80.     [_sheet showInView: view];    
  81.     
  82.     /* Ensure that the delegate (that's us) survives until the sheet is dismissed */    
  83.     [self retain];    
  84. }    
  85.     
  86. - (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex {    
  87.     /* Run the button's block */    
  88.     if (buttonIndex >= 0 && buttonIndex < [_blocks count]) {    
  89.         void (^b)() = [_blocks objectAtIndex: buttonIndex];    
  90.         b();    
  91.     }    
  92.     
  93.     /* Sheet to be dismissed, drop our self reference */    
  94.     [self release];    
  95. }    
  96.     
  97. @end    
  98. #import "PLActionSheet.h"  
  99.  
  100. @implementation PLActionSheet  
  101.  
  102. - (id) initWithTitle: (NSString *) title {  
  103.     if ((self = [super init]) == nil)  
  104.         return nil;  
  105.       
  106.     /* Initialize the sheet */  
  107.     _sheet = [[UIActionSheet alloc] initWithTitle: title delegate: self cancelButtonTitle: 
  108. nil destructiveButtonTitle: nil otherButtonTitles: nil];  
  109.     /* Initialize button -> block array */  
  110.     _blocks = [[NSMutableArray alloc] init];  
  111.  
  112.     return self;  
  113. }  
  114.  
  115. - (void) dealloc {  
  116.     _sheet.delegate = nil;  
  117.     [_sheet release];  
  118.  
  119.     [_blocks release];  
  120.  
  121.     [super dealloc];  
  122. }  
  123.  
  124. - (void) setCancelButtonWithTitle: (NSString *) title block: (void (^)()) block {  
  125.     [self addButtonWithTitle: title block: block];  
  126.     _sheet_sheet.cancelButtonIndex = _sheet.numberOfButtons - 1;  
  127. }  
  128.  
  129. - (void) addButtonWithTitle: (NSString *) title block: (void (^)()) block {  
  130.     [_blocks addObject: [[block copy] autorelease]];  
  131.     [_sheet addButtonWithTitle: title];  
  132. }  
  133.  
  134. - (void) showInView: (UIView *) view {  
  135.     [_sheet showInView: view];  
  136.  
  137.     /* Ensure that the delegate (that's us) survives until the sheet is dismissed */  
  138.     [self retain];  
  139. }  
  140.  
  141. - (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex {  
  142.     /* Run the button's block */  
  143.     if (buttonIndex >= 0 && buttonIndex < [_blocks count]) {  
  144.         void (^b)() = [_blocks objectAtIndex: buttonIndex];  
  145.         b();  
  146.     }  
  147.  
  148.     /* Sheet to be dismissed, drop our self reference */  
  149.     [self release];  
  150. }  
  151.  
  152. @end 

用法如下:

  1. - (void) displaySheet {    
  2.     PLActionSheet *sheet = [[PLActionSheet alloc] initWithTitle: @"Destination"];    
  3.     /* A re-usable block that simply displays an alert message */    
  4.     void (^alert)(NSString *) = ^(NSString *message) {    
  5.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Destination Selected"                                 
  6.       message: message                                                   
  7.  delegate: nil                                        
  8.    cancelButtonTitle: @"OK"                                       
  9.    otherButtonTitles: nil];    
  10.         [alert show];    
  11.  
  12.         [alert release];    
  13.     };    
  14.     [sheet addButtonWithTitle: @"Work" block: ^{    
  15.         alert(@"Work selected");    
  16.     }];    
  17.     [sheet addButtonWithTitle: @"Home" block: ^{    
  18.         alert(@"Home selected");    
  19.     }];    
  20.     [sheet addButtonWithTitle: @"School" block: ^{    
  21.         alert(@"School selected");    
  22.     }];     
  23.     [sheet setCancelButtonWithTitle: @"Cancel" block: ^{}];    
  24.      
  25.     [sheet showInView: self.window];    
  26.     [sheet release];    
  27. }    
  28. - (void) displaySheet {  
  29.     PLActionSheet *sheet = [[PLActionSheet alloc] initWithTitle: @"Destination"];  
  30.     /* A re-usable block that simply displays an alert message */  
  31.     void (^alert)(NSString *) = ^(NSString *message) {  
  32.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Destination Selected"         
  33.         message: message                                              
  34.       delegate: nil                                        
  35.    cancelButtonTitle: @"OK"                                  
  36.       otherButtonTitles: nil];  
  37.         [alert show];  
  38.         [alert release];  
  39.     };  
  40.       
  41.     [sheet addButtonWithTitle: @"Work" block: ^{  
  42.         alert(@"Work selected");  
  43.     }];  
  44.     [sheet addButtonWithTitle: @"Home" block: ^{  
  45.         alert(@"Home selected");  
  46.     }];  
  47.     [sheet addButtonWithTitle: @"School" block: ^{  
  48.         alert(@"School selected");  
  49.     }];  
  50.     [sheet setCancelButtonWithTitle: @"Cancel" block: ^{}];  
  51.     [sheet showInView: self.window];  
  52.     [sheet release];  

采用BLOCK的方法,源碼可讀性大大增強。如果我們在同一個Controller里需要多個UIActionSheet, 而只有一個delegate方法,那在這個delegate方法里就要跟蹤現在是哪一個UIActionSheet,這樣就會有很多if else的代,也難于維護。以后將多采用BLOCK來寫程序了。

小結:IOS 4Block實戰之UIActionSheet的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2013-07-19 12:52:50

iOS中BlockiOS開發學習

2017-03-07 09:45:43

iOSBlock開發

2013-07-19 14:00:13

iOS中BlockiOS開發學習

2013-07-19 14:35:59

iOS中BlockiOS開發學習

2013-06-04 15:41:31

iOS開發移動開發block

2025-01-10 09:47:43

blockSDKiOS

2013-07-19 13:16:26

iOS中BlockiOS開發學習內存管理

2011-08-01 18:44:16

iPhone開發 UIALertVie UIActionSh

2011-08-16 10:45:25

iPhone開發控件

2010-09-03 12:55:15

CSSblockinline

2010-09-03 10:18:06

CSSdisplay:inl

2011-07-28 09:49:50

IOS IOS 4 UI

2010-09-16 09:13:09

CSS display

2011-07-20 11:01:39

2010-09-09 15:54:00

blockinlineCSS

2014-07-30 11:12:09

block

2012-05-01 08:26:00

iOS

2014-05-09 12:59:26

iOS移動互聯網

2011-08-19 13:51:12

2025-10-10 09:03:18

點贊
收藏

51CTO技術棧公眾號

国产精品一 二 三| 中文字幕亚洲一区二区三区五十路| 亚洲精品天堂成人片av在线播放 | 日本久久精品电影| 亚洲欧美精品| 日韩中文字幕影院| 免费观看30秒视频久久| 欧美国产亚洲视频| 这里只有久久精品| silk一区二区三区精品视频| 91久久国产最好的精华液| 永久免费在线看片视频| 国产精品无码一区二区三| 免费看的黄色大片| 日韩一级片免费看| 久久激情五月激情| 欧美激情综合色综合啪啪五月| 成人免费毛片糖心| 欧美精品影院| 欧美三区在线观看| 九九九九免费视频| 日本一本在线免费福利| 中文字幕欧美国产| 国产精品久久国产三级国电话系列| 亚洲精品久久久久久久蜜桃| 欧美日韩免费| 色哟哟入口国产精品| 自拍视频一区二区| 欧美9999| 欧美绝品在线观看成人午夜影视 | 午夜亚洲视频| 欧美激情视频在线免费观看 欧美视频免费一 | 中文字幕一区二区三区乱码| 日本成人一区| 99国产欧美另类久久久精品| http;//www.99re视频| 一区二区日韩视频| 毛片基地黄久久久久久天堂| 欧美亚洲在线播放| 日韩欧美三级在线观看| 欧美日韩亚洲一区二区三区在线| 自拍偷拍免费精品| 超碰97av在线| 欧美日中文字幕| 国产亚洲欧美一区| www.99热| 视频在线不卡免费观看| 在线中文字幕日韩| 18精品爽国产三级网站| 欧美午夜精彩| 在线观看国产精品淫| 国精品无码人妻一区二区三区| 嫩草国产精品入口| 亚洲精品成人网| 欧美精品黑人猛交高潮| 亚洲第一福利社区| 亚洲人成绝费网站色www| 成年人网站免费看| 黑丝美女一区二区| 色悠悠国产精品| 天堂网av2018| 欧美在线二区| 高清一区二区三区日本久| 国产无遮挡又黄又爽又色| 日韩视频精品在线观看| 欧洲成人午夜免费大片| 欧美日韩一级黄色片| 日韩综合小视频| 国产人妖伪娘一区91| 国产普通话bbwbbwbbw| 激情六月婷婷久久| 国产精品乱子乱xxxx| 婷婷婷国产在线视频| 久久久久国产精品人| 日韩三级电影| fc2ppv国产精品久久| 亚洲3atv精品一区二区三区| 免费看的黄色大片| 久久爱.com| 日韩欧美国产电影| 少妇精品一区二区三区| 国产高清欧美| 性视频1819p久久| 亚洲色成人www永久网站| 久热成人在线视频| 国产久一道中文一区| 国产精品一区二区三区四区色| 国产精品成人在线观看| 亚洲精品久久久久久久蜜桃臀| 天堂а√在线最新版中文在线| 色婷婷精品久久二区二区蜜臂av| www午夜视频| ccyy激情综合| 社区色欧美激情 | 久久精品一级片| 日韩中文字幕一区二区三区| 亚洲综合中文字幕在线| 香蕉av在线播放| 18欧美亚洲精品| 欧美激情 国产精品| 国产一区二区三区影视| 精品三级av在线| 蜜桃久久精品成人无码av| 欧美精品自拍| 国产日韩欧美黄色| 日韩电影网址| 亚洲综合在线观看视频| 一区二区在线播放视频| 成人爽a毛片免费啪啪红桃视频| 国产一区二区精品丝袜| 国产福利拍拍拍| 激情综合色综合久久综合| 久久99精品久久久久子伦| 2020国产在线视频| 精品视频资源站| 麻豆精品免费视频| 在线不卡欧美| 92福利视频午夜1000合集在线观看| 青青青免费视频在线2| 亚洲最新视频在线播放| 亚洲天堂伊人网| 成人午夜av| 日韩美女在线看| 日韩精品福利| 精品久久久久久久久中文字幕| 亚洲国产欧美91| 日韩欧美一区二区三区在线视频 | 蜜臀av色欲a片无码精品一区| 日本精品裸体写真集在线观看| 欧美成人vr18sexvr| 波多野结衣喷潮| 青青草国产精品97视觉盛宴| 国产一区二区免费在线观看| 肉肉视频在线观看| 欧美一区2区视频在线观看| 99热99这里只有精品| 丝袜亚洲另类欧美| 日本免费一区二区三区| 日韩精品99| 亚洲欧美日韩区| 91精品国产高清一区二区三密臀| 99热99精品| 北条麻妃在线视频观看| 精品中国亚洲| 性欧美激情精品| 亚洲 另类 春色 国产| 亚洲国产成人av网| 欧洲熟妇的性久久久久久| 综合久久一区| 91传媒免费看| 综合久久2019| 精品精品欲导航| 国产精选第一页| 91女厕偷拍女厕偷拍高清| 男人和女人啪啪网站| 女人抽搐喷水高潮国产精品| 欧美激情一区二区三区在线视频观看| 精品久久人妻av中文字幕| 亚洲综合在线视频| 色天使在线视频| 久久久久99| 亚洲不卡1区| 亚州一区二区三区| 北条麻妃久久精品| 精品久久久久成人码免费动漫| 亚洲香蕉伊在人在线观| 最近日本中文字幕| 日韩福利电影在线| 国产麻豆电影在线观看| 一区中文字幕| 欧美中文在线视频| 日本激情视频在线观看| 日韩一区二区麻豆国产| 精品深夜av无码一区二区老年| 懂色中文一区二区在线播放| 男人添女人下部高潮视频在观看| 天天躁日日躁狠狠躁欧美巨大小说| 国产成人精品一区二区在线| 日韩精品成人av| 精品奇米国产一区二区三区| 日韩免费不卡视频| 国产精品卡一卡二| 性活交片大全免费看| 久久亚洲精品伦理| 免费观看国产视频在线| 日韩动漫一区| 成人免费网站在线观看| av免费不卡国产观看| 国产一区二区免费| 高清国产mv在线观看| 在线观看www91| 午夜69成人做爰视频| 26uuu国产电影一区二区| aaa一级黄色片| 久久精选视频| 99国产精品白浆在线观看免费| 九九热精品视频在线观看| 成人xvideos免费视频| 偷拍自拍在线看| 欧美丰满老妇厨房牲生活| 九色在线视频蝌蚪| 精品久久久久久久久久久久久久久久久 | 师生出轨h灌满了1v1| 免费亚洲婷婷| 国产玉足脚交久久欧美| 日韩在线理论| 欧美一区二区视频在线| 国产欧美啪啪| 91免费看片在线| 欧美不卡高清一区二区三区| 久久久噜噜噜久久久| 免费高清完整在线观看| 亚洲剧情一区二区| 日韩一级中文字幕| 日韩欧美成人午夜| 在线视频 中文字幕| 日韩欧美精品网站| 国产性70yerg老太| 亚洲三级在线播放| 亚洲欧美va天堂人熟伦 | 日韩女优av电影| 羞羞色院91蜜桃| 色综合色狠狠综合色| 久久久久久国产精品免费播放| 中文在线一区二区| 日本少妇高潮喷水xxxxxxx| 成人av网站大全| 粗大的内捧猛烈进出视频| 精品中文字幕一区二区| 簧片在线免费看| 日本在线不卡视频| 亚洲一二三区av| 日韩福利电影在线| 蜜臀视频一区二区三区| 另类av一区二区| 日批视频在线免费看| 国产视频一区免费看| av免费观看国产| 在线观看的日韩av| 国产a级片网站| 国产欧美日韩综合一区在线播放| 无码人妻精品一区二区蜜桃网站| 欧美激情第10页| 97av中文字幕| 欧美久色视频| 精品久久久久久无码中文野结衣| 国产一区观看| 蜜桃传媒一区二区三区| 亚洲欧洲另类| 国产h视频在线播放| 亚洲精品影院在线观看| 欧美日本视频在线观看| 久久综合图片| 日日干夜夜操s8| 韩国女主播成人在线| 捷克做爰xxxⅹ性视频| 国产激情精品久久久第一区二区| 奇米777在线视频| 国产69精品久久777的优势| 国产精九九网站漫画| gogo大胆日本视频一区| 无码h肉动漫在线观看| 国产精品污污网站在线观看| 美国精品一区二区| 一区二区三区在线视频播放| 国产中文字幕免费| 色94色欧美sute亚洲线路一ni| 中日韩av在线| 欧美一区二区大片| 五月婷中文字幕| 在线视频欧美日韩精品| 好操啊在线观看免费视频| 国a精品视频大全| 欧美日韩视频免费观看| 成人a视频在线观看| 99国产精品免费网站| 欧美日产一区二区三区在线观看| 日韩极品一区| www.成年人视频| 三级不卡在线观看| 天天色天天干天天色| 99精品一区二区| 天天爽天天爽天天爽| 亚洲午夜久久久| 在线观看日韩一区二区| 日韩三级免费观看| 美女毛片在线看| 久久大大胆人体| 在线播放高清视频www| 国产综合久久久久| 天堂日韩电影| 中国黄色录像片| 日韩精彩视频在线观看| 丰满人妻一区二区三区53视频| 久久综合色播五月| 免费在线观看一级片| 色噜噜夜夜夜综合网| 99久久夜色精品国产亚洲| 亚洲女人天堂av| 欧美草逼视频| 成人激情视频小说免费下载| 最近国产精品视频| 国产精品视频一二三四区| 轻轻草成人在线| a天堂视频在线观看| 亚洲欧洲无码一区二区三区| 久久久精品视频网站| 精品久久久久久无| 老司机在线视频二区| 日本精品视频网站| 福利在线一区| 9191国产视频| 精品在线一区二区| 摸摸摸bbb毛毛毛片| 精品久久中文字幕久久av| 99久久国产热无码精品免费| 国产午夜精品一区二区三区 | 欧美日韩国产精品| 国产亲伦免费视频播放| 一区二区三区精品99久久| 狠狠躁少妇一区二区三区| 亚洲最大福利网| 午夜精品毛片| 最近中文字幕一区二区| 久久久噜噜噜久噜久久综合| 日本熟妇毛耸耸xxxxxx| 日韩精品一区在线观看| 18+视频在线观看| 91在线播放国产| 91精品动漫在线观看| 亚洲国产精品三区| 欧美激情一区二区三区在线| 欧美性猛交bbbbb精品| 亚洲国产日韩精品在线| 免费男女羞羞的视频网站在线观看| 成人综合网网址| 国产精品久久久久一区二区三区厕所| 青青青在线视频免费观看| 国产视频一区二区在线观看| 国产亚洲欧美在线精品| 亚洲网站视频福利| 制服诱惑亚洲| 婷婷亚洲婷婷综合色香五月| 秋霞电影网一区二区| 国产第一页精品| 正在播放亚洲一区| av片在线观看| 国产成人精品福利一区二区三区| 激情久久五月| 中文字幕在线永久| 疯狂做受xxxx高潮欧美日本| 三级视频在线| 国产成人精品av| 成久久久网站| 日韩av自拍偷拍| 一区二区三区四区在线| 欧美 日韩 人妻 高清 中文| 国外视频精品毛片| 亚洲激情77| 在线观看亚洲色图| 亚洲人成在线播放网站岛国| www.蜜桃av.com| 91高清视频在线免费观看| 神马久久av| 男女视频在线看| 亚洲精品国产成人久久av盗摄| 国产香蕉在线观看| 日本亚洲欧美成人| 日韩在线高清| 五月天丁香社区| 一本在线高清不卡dvd| 欧美成年黄网站色视频| 成人午夜电影在线播放| 国产亚洲精品自拍| 九一在线免费观看| 精品少妇一区二区三区在线视频| 日本不卡免费高清视频在线| 无码免费一区二区三区免费播放 | 日韩精品在线免费观看视频| 日韩网站中文字幕| 欧美日韩dvd| 久久久久9999亚洲精品| 国产伦理一区二区| 18性欧美xxxⅹ性满足| 欧美xxxx中国| 免费的av网站| 欧美高清一级片在线| 波多野结衣乳巨码无在线观看| 神马影院我不卡午夜| 国产91精品免费| 亚洲精品一区二区二区| 欧美精品电影免费在线观看| 国语产色综合| 国产精品久久久久久亚洲av| 欧美性生活一区| 草草在线视频| 水蜜桃在线免费观看| 国产人伦精品一区二区| 秋霞视频一区二区| 91亚洲永久免费精品|