您的位置:首页 > 产品设计 > UI/UE

UIActionSheet+Blocks

2013-11-10 14:22 225 查看
UIActionSheet+Blocks.h

@@ -0,0 +1,57 @@

+//

+//  UIActionSheet+Blocks.h

+//

+//  Created by Shai Mishali on 9/26/13.

+//  Copyright (c) 2013 Shai Mishali. All rights reserved.

+//

+

+#import <UIKit/UIKit.h>

+

+/**

+UIActionSheet+Blocks is a simple Block implementation for UIActionSheet created by Shai Mishali.

+*/

+

+@interface UIActionSheet (Blocks) <UIActionSheetDelegate>

+

+/**

+Present a UIActionSheet on a specific view

+

+Note: On this shorthand version the cancel button always displayed "Cancel" as the text. If you require a custom cancel text, use the longer method below.

+

+@param view The view on which the UIActionSheet will be displayed

+@param title The title of the UIActionSheet

+@param otherStrings An array containing strings of other buttons

+@param onCancel Cancel block - Called when the user pressed the cancel button, or the UIActionSheet has been manually dismissed

+@param onClickedButton Clicked button at index block - Called when the user presses any button other then Cancel

+

+@return The generated UIActionSheet

+*/

++(UIActionSheet *)presentOnView: (UIView *)view

+ withTitle: (NSString *)title

+  otherButtons: (NSArray *)otherStrings

+  onCancel: (void (^)(UIActionSheet *))cancelBlock

+   onClickedButton: (void (^)(UIActionSheet *, NSUInteger))clickBlock;

+

+/**

+Present a UIActionSheet on a specific view

+

+@param view The view on which the UIActionSheet will be displayed

+@param title The title of the UIActionSheet

+@param cancelString The string shown on the Cancel button

+@param destructiveString The string shown on the Destructive button

+@param otherStrings An array containing strings of other buttons

+@param onCancel Cancel block - Called when the user pressed the cancel button, or the UIActionSheet has been manually dismissed

+@param onDestructive Destructive block - Called when the user presses the destructive button

+@param onClickedButton Clicked button at index block - Called when the user presses any button other then Cancel/Destructive

+

+@return The generated UIActionSheet

+*/

++(UIActionSheet *)presentOnView: (UIView *)view

+ withTitle: (NSString *)title

+  cancelButton: (NSString *)cancelString

+ destructiveButton: (NSString *)destructiveString

+  otherButtons: (NSArray *)otherStrings

+  onCancel: (void (^)(UIActionSheet *))cancelBlock

+ onDestructive: (void (^)(UIActionSheet *))destroyBlock

+   onClickedButton: (void (^)(UIActionSheet *, NSUInteger))clickBlock;

+@end

73  UIActionSheet+Blocks.m

@@ -0,0 +1,73 @@

+//

+//  UIActionSheet+Blocks.m

+//

+//  Created by Shai Mishali on 9/26/13.

+//  Copyright (c) 2013 Shai Mishali. All rights reserved.

+//

+

+#import "UIActionSheet+Blocks.h"

+

+static void (^__clickedBlock)(UIActionSheet *sheet, NSUInteger index);

+static void (^__cancelBlock)(UIActionSheet *sheet);

+static void (^__destroyBlock)(UIActionSheet *sheet);

+

+@implementation UIActionSheet (Blocks)

+

++(UIActionSheet *)presentOnView:(UIView *)view

+ withTitle:(NSString *)title

+  otherButtons:(NSArray *)otherStrings

+  onCancel:(void (^)(UIActionSheet *))cancelBlock

+   onClickedButton:(void (^)(UIActionSheet *, NSUInteger))clickBlock{

+

+return [self presentOnView:view

+withTitle:title

+ cancelButton:NSLocalizedString(@"Cancel", @"")

+destructiveButton:nil

+ otherButtons:otherStrings

+ onCancel:cancelBlock

+onDestructive:nil

+  onClickedButton:clickBlock];

+}

+

++(UIActionSheet *)presentOnView: (UIView *)view

+ withTitle: (NSString *)title

+  cancelButton: (NSString *)cancelString

+ destructiveButton: (NSString *)destructiveString

+  otherButtons: (NSArray *)otherStrings

+  onCancel: (void (^)(UIActionSheet *))cancelBlock

+ onDestructive: (void (^)(UIActionSheet *))destroyBlock

+   onClickedButton: (void (^)(UIActionSheet *, NSUInteger))clickBlock{

+__cancelBlock           = cancelBlock;

+__clickedBlock          = clickBlock;

+__destroyBlock          = destroyBlock;

+

+UIActionSheet *sheet    = [[UIActionSheet alloc] initWithTitle:title

+                                     delegate:(id) [self class]

+                            cancelButtonTitle:cancelString

+                       destructiveButtonTitle:destructiveString

+                            otherButtonTitles:nil];

+

+for(NSString *other in otherStrings)

+   [sheet addButtonWithTitle: other];

+

+[sheet showInView: view];

+

+return sheet;

+}

+

+#pragma mark - Private Static delegate

++(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

+if([actionSheet destructiveButtonIndex] == buttonIndex && __destroyBlock)

+   __destroyBlock(actionSheet);

+else if([actionSheet cancelButtonIndex] == buttonIndex && __cancelBlock)

+   __cancelBlock(actionSheet);

+else if(__clickedBlock)

+   __clickedBlock(actionSheet, buttonIndex);

+}

+

++(void)actionSheetCancel:(UIActionSheet *)actionSheet{

+if(__cancelBlock)

+   __cancelBlock(actionSheet);

+}

+

+@end

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: