麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Block支持的UIAlertView

2019-11-14 20:15:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

開(kāi)發(fā)IOS時(shí)經(jīng)常會(huì)使用到UIAlertView類(lèi),該類(lèi)提供了一種標(biāo)準(zhǔn)視圖,可向用戶展示警告信息。當(dāng)用戶按下按鈕關(guān)閉該視圖時(shí),需要用委托協(xié)議(Delegate PRotocol)來(lái)處理此動(dòng)作,但是要設(shè)置好這個(gè)委托協(xié)議,就得把創(chuàng)建警告視圖和處理按鈕動(dòng)作的代碼分開(kāi)。

UIAlertView *inputAlertView = [[UIAlertView alloc] initWithTitle:@"Add a new to-do item:" message:nil delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Add", nil];

//UIAlertViewDelegate protocol method

- (void)alertView:(UIAlertView *)alertView clickButtonAtButtonIndex:(NSInteger)buttonIndex {

  if (buttonIndex == 0) {

    [self doCancel];

  } else {

  [self doContinue];

 }

}

假如想在一個(gè)類(lèi)中處理多個(gè)UIAlertView,那么代碼會(huì)更加復(fù)雜,需要在delegate方法中加入對(duì)AlertView的tag的判斷。

如果能在創(chuàng)建UIAlertView時(shí)把處理每個(gè)按鈕的邏輯寫(xiě)好,那就簡(jiǎn)單多了,我們可以使用BLOCK來(lái)完成。

一、使用Category +Associate Object +Block

//UIAlertView+FHBlock.h

typedef void (^FHAlertViewCompletionBlock)(UIAlertView *alertView, NSInteger buttonIndex);

@interface UIAlertView (FHBlock) <UIAlertViewDelegate>

@property(nonatomic,copy) FHAlertViewCompletionBlock completionBlock;

@end

 

 

//UIAlertView+FHBlock.m

#import <objc/runtime.h>

@implementation UIAlertView (FHBlock)<UIAlertViewDelegate>

- (void)setCompletionBlock:(FHAlertViewCompletionBlock)completionBlock {

  objc_setAssociatedObject(self, @selector(completionBlock), completionBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);

  if (completionBlock == NULL) {

    self.delegate = nil;

  }

  else {

    self.delegate = self;

  }

}

- (FHAlertViewCompletionBlock)completionBlock {

  return objc_getAssociatedObject(self, @selector(completionBlock));

}

 

#pragma mark - UIAlertViewDelegate

- (void)alertView:(UIAlertView *)alertView clickButtonAtButtonIndex:(NSInteger)buttonIndex {

  if (self.completionBlock) {

    self.completionBlock(self, buttonIndex);

  }

}

@end

 

二、inheritance+Block

//FHAlertView.h

typedef void(^AlertBlock)(UIAlert* alert,NSInteger buttonIndex);

@interface FHAlertView:UIAlertView

@property(nonatomic,copy) AlertBlock completionBlock;

 

//FHAlertView.m

#pragma mark - UIAlertViewDelegate

- (void)alertView:(UIAlertView *)alertView clickButtonAtButtonIndex:(NSInteger)buttonIndex {

  if (self.completionBlock) {

    self.completionBlock(self, buttonIndex);

  }

}

@end

 

可以參考源碼http://blog.projectrhinestone.org/preventhandler/


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 狠狠干b | 久久一本日日摸夜夜添 | 狼伊千合综网中文 | 日韩中文一区 | 免费在线观看国产精品 | 视频一区二区三区视频 | 国产一区二区视频在线播放 | 欧美黄色大片免费观看 | 久久免费观看一级毛片 | 中文字幕综合在线观看 | 日韩黄色免费观看 | www.成人在线视频 | 黄视频免费在线观看 | av电影免费在线 | 精品视频在线免费看 | 国产精品免费一区二区三区四区 | 黄色羞羞视频在线观看 | 成人在线视频免费 | 久久久国产精品电影 | 女人叉开腿让男人桶 | 亚洲成人在线免费 | 免费观看视频在线 | 亚洲综合一区在线观看 | 亚洲四播房 | 欧美一级一区二区三区 | 精品成人免费视频 | 国产女同疯狂激烈互摸 | 欧美一级爱爱 | 在线看一区二区三区 | 麻豆911| 免费永久看羞羞片网站入口 | 欧美一级片在线 | 青草视频在线观看视频 | 99精品视频网站 | 久久久久北条麻妃免费看 | 国产成人强伦免费视频网站 | 久久一区国产 | 欧美成年人在线视频 | 欧美成年人视频 | 日韩在线欧美在线 | 美国黄色小视频 |