iPhone, возможно ли поместить actionSheet и событие clickedButtonAtIndex в повторно используемый класс? - PullRequest
0 голосов
/ 11 ноября 2010

Я хочу предоставить одинаковые кнопки и одинаковую функциональность в clickedButtonAtIndex в нескольких видах, могу ли я сделать это в классе многократного использования?

Если да, то как?

1 Ответ

1 голос
/ 11 ноября 2010

Один из способов заключался бы в инкапсуляции вашей таблицы действий + делегата в новый класс:

@interface MyActionSheet : NSObject <UIActionSheetDelegate>
{
    UIActionSheet* _actionSheet;
}

@end

@implementation MyActionSheet

- (id) initAndShowInView: (UIView*) view
{
    if ( (self = [super init] ) )
    {
        _actionSheet = [[UIActionSheet alloc] initWithTitle: @"Hi There" delegate:self cancelButtonTitle:@"done" destructiveButtonTitle: nil otherButtonTitles: @"button 1", @"button2", nil];
        [_actionSheet showInView:view];
    }

    return self;
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    // your logic here
}

- (void)dealloc {

    [_actionSheet release];

    [super dealloc];
}

@end

Это можно расширить, добавив методы делегирования, которые могут вам понадобиться. Вам нужно будет убедиться, что объект продолжает жить (сохраните его), пока лист действий является видимым - лист действий не увеличивает счетчик ссылок для своего делегата ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...