Динамично променяйте бутоните и действията на UIActionSheet

Имам UIActionSheet, който създадох динамично и може да има няколко бутона от 1 до 5, включително бутон за отказ. Мога да накарам бутона за отмяна да работи добре, но да кажем, че трябва да се добавят само 2 бутона към UIActionSheet, да кажем, че са бутони 2 и 4, как да определя кое действие да извърша. Защото обикновено бих използвал нещо подобно.

 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
          switch(buttonIndex) {
                 case 0:
                       // Do something here.
                       break;
                 case 1:
                       // Do something else here.
                       break;
                 case 2:
                       // Do something else again.
                       break;
                 case 3:
                       //  Do something else here again.
                       break;
                 default:
                        break;
          }

Но ако добавя само два бутона динамично, ще използвам само случаи 0, 1. Но ако добавя бутон 4 като един от двата бутона, все още искам да използва случай 3. Възможно ли е това или има друг начин да го направя ?


person Popeye    schedule 01.03.2012    source източник


Отговори (2)


Използвайте метода buttonTitleAtIndex:, за да проверите заглавията на бутоните. Трябва обаче да внимавате кодът ви да не се повреди, ако промените заглавието на бутон на едно място. Вероятно е най-добре да запазите заглавието на всеки бутон в допълнителна променлива, когато създавате бутоните, и да използвате тази променлива, за да сравните по-късно със заглавията на бутоните.

person Ole Begemann    schedule 01.03.2012

Когато създавате UIActionSheet, запазете отделен масив, съпоставящ индексите на вашите бутони към действителните задачи, които искате да изпълните (изброяване на действия, например).

След това включете tasks[buttonIndex] вместо buttonIndex.

person Thomas Deniau    schedule 01.03.2012