2
// UIActionSheet+Blocks.m
5
// Created by Jiva DeVoe on 1/5/11.
6
// Copyright 2011 Random Ideas, LLC. All rights reserved.
9
#import "UIActionSheet+Blocks.h"
10
#import <objc/runtime.h>
12
static NSString *RI_BUTTON_ASS_KEY = @"com.random-ideas.BUTTONS";
14
@implementation UIActionSheet (Blocks)
16
-(id)initWithTitle:(NSString *)inTitle cancelButtonItem:(RIButtonItem *)inCancelButtonItem destructiveButtonItem:(RIButtonItem *)inDestructiveItem otherButtonItems:(RIButtonItem *)inOtherButtonItems, ...
18
if((self = [self initWithTitle:inTitle delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]))
20
NSMutableArray *buttonsArray = [NSMutableArray array];
22
RIButtonItem *eachItem;
24
if (inOtherButtonItems)
26
[buttonsArray addObject: inOtherButtonItems];
27
va_start(argumentList, inOtherButtonItems);
28
while((eachItem = va_arg(argumentList, RIButtonItem *)))
30
[buttonsArray addObject: eachItem];
35
for(RIButtonItem *item in buttonsArray)
37
[self addButtonWithTitle:item.label];
42
[buttonsArray addObject:inDestructiveItem];
43
NSInteger destIndex = [self addButtonWithTitle:inDestructiveItem.label];
44
[self setDestructiveButtonIndex:destIndex];
46
if(inCancelButtonItem)
48
[buttonsArray addObject:inCancelButtonItem];
49
NSInteger cancelIndex = [self addButtonWithTitle:inCancelButtonItem.label];
50
[self setCancelButtonIndex:cancelIndex];
53
objc_setAssociatedObject(self, RI_BUTTON_ASS_KEY, buttonsArray, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
55
[self retain]; // keep yourself around!
60
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
62
NSArray *buttonsArray = objc_getAssociatedObject(self, RI_BUTTON_ASS_KEY);
63
RIButtonItem *item = [buttonsArray objectAtIndex:buttonIndex];
66
objc_setAssociatedObject(self, RI_BUTTON_ASS_KEY, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
67
[self release]; // and release yourself!