Динамически изменять кнопки и действия UIActionSheet - PullRequest
2 голосов
/ 01 марта 2012

У меня есть UIActionSheet, который я создал динамически, и он может иметь количество кнопок от 1 до 5, включая кнопку отмены. Я могу заставить кнопку отмены работать нормально, но допустим, что на UIActionSheet нужно добавить только 2 кнопки, скажем, они кнопки 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. Это возможно или есть другой способ делать это?

Ответы [ 2 ]

6 голосов
/ 01 марта 2012

Используйте метод buttonTitleAtIndex:, чтобы проверить заголовки кнопок. Вы должны позаботиться о том, чтобы ваш код не сломался, если вы измените заголовок кнопки в одном месте. Вероятно, лучше всего сохранять заголовок каждой кнопки в дополнительной переменной при создании кнопок и использовать эту переменную для сравнения с заголовками кнопок позже.

2 голосов
/ 01 марта 2012

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

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

...