Динамически изменять кнопки и действия UIActionSheet

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