Как заставить UIActionsheet распознавать, какая кнопка была нажата последней? - PullRequest
2 голосов
/ 21 марта 2012

В настоящее время я использую UIActionsheet с двумя кнопками.

Каждая из кнопок сохраняет различные значения в [NSUserDefaults standardUserDefaults]

Реализация, которую я имею atm:

-(void)foo{

    UIActionSheet *mySheet = [[UIActionSheet alloc] initWithBlabla:blabla];

    [mySheet showFromTabBar:myTabBar];

    [mySheet release];


{


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


    if(buttonIndex == x){

        [[NSUserDefaults standardUserDefaults] setValue:foo forKey:bar];

    {
    else{
        // bla
    {



}

Теперь, для проблемы, которую я имею под рукой.

Мне бы очень хотелось, чтобы таблица действий распознала, какая из кнопок была нажата последней, и представила это каким-то образом.

Так, например, при первом отображении таблицы действий обе кнопки отображаются серыми по умолчанию, одна кнопка нажимается, и таблица действий исчезает.

Во второй раз, когда отображается таблица действий, она появляется так же, как и в первый раз.И мне нравится лист действий, чтобы дать обратную связь с пользователем относительно того, какая из кнопок была нажата совсем недавно.(другой цвет или что-нибудь на самом деле).

Если бы я мог получить доступ к кнопкам, сгенерированным в листе действий, это было бы без проблем.

В псевдокоде я, вероятно, хотел бы получить решение, подобное приведенному ниже:

UIActionSheet *myActionSheet = [[UIActionSheet] alloc] initwithBlabla:blabla];

if([[userDefaults objectForKey:@"foo"]isEqualToString:@"bar"])
{
    [myActionSheet setHighLighted:otherButton2];
}

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

Любые советы и / или указатели о том, как реализовать такую ​​штуку, будут высоко оценены!

1 Ответ

1 голос
/ 21 марта 2012

UIActionSheet имеет три различных стиля отображения кнопок: деструктивная кнопка (красная) для ... ну, деструктивные действия, кнопка отмены, которая является нижней и немного темнее обычных кнопок, и так называемые «другие»кнопки ", которые имеют серый цвет.

Теперь, если вы хотите использовать решение «без хаки-хаки», вы можете использовать эти три цвета для создания нужного эффекта, просто создав условие if и создавая свою таблицу действий немного по-разному каждыйвремя.

Если вы все в хакер-хакерских решениях и хотите больше цветов, вы можете рассмотреть возможность перебора всех подпредставлений в листе действий и напрямую изменить их стиль.Но имейте в виду: ваше решение может не работать в будущих выпусках iOS, поскольку нет гарантии, что внутренние компоненты без публичного API не изменятся (поэтому в большинстве случаев для него нет публичного API).

...