iPhone: обрабатывать несколько листов действий - PullRequest
2 голосов
/ 13 августа 2010

В одном из моих представлений используются 3 листа действий, которые появляются при нажатии различных кнопок. Поскольку у меня есть только один метод - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex, как лучше узнать, с каким листом действий я имею дело? Первой кнопкой в ​​любом из моих ActionSheets была бы кнопка buttonIndex 0. Поэтому мне нужно знать, как поступить вызов actionSheet.

Идеи? * * 1004

Ответы [ 4 ]

10 голосов
/ 13 августа 2010

Вам необходимо установить тег при создании листа действий и проверить его в методе листа действий.

1 голос
/ 15 октября 2010

У меня была та же проблема, и я просто установил условие на основе заголовка листа действий:

в

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


if (actionSheet.title == @"present action sheet A") {

//do some stuff

}
if (actionSheet.title == @"present action sheet B") {

//do some stuff

}

Работает как шарм, не уверен, что у листов действий есть тегиможет быть, я ошибаюсь.

0 голосов
/ 07 августа 2014

Установить тег при создании действия

UIActionSheet * actionSheet = 
[[UIActionSheet alloc] 
initWithTitle:@"My title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil  otherButtonTitles:@"Option1",@"Option2", nil];

actionSheet.tag = 1100;





-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

if(actionSheet.tag == 1100)
{

    switch (buttonIndex) 
    {
        case 0: 
        {  
        }
           break;
        case 1:
        {

        }
            break;
        default:
            break;
    }  
}  
}
0 голосов
/ 13 августа 2010

Использовать переменную уровня класса для 3 листов действий.Затем вы можете сравнить источник действия в методе actionSheet.

...