Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
#1

Кнопки Action Sheet - Objective-C

04.03.2014, 00:47. Просмотров 803. Ответов 5
Метки нет (Все метки)

Всем привет!

Пытаюсь привязать allert ко второй кнопке сверху (называется- "Кнопка"). Ко всем привязал, к этой не могу- подскажите, где ошибся-показывается? Пишет сообщение от третьей!


Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
- (IBAction)button:(UIButton *)sender
{
    UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"AlertSheet" delegate:self cancelButtonTitle:@"Отмена" destructiveButtonTitle:@"Красная кнопка" otherButtonTitles:@"Кнопка",@"Еще кнопка", nil];
    [actionSheet showInView:self.view];
    
 
}
 
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
    NSLog(@"Была нажата кнопка с номером - %d",buttonIndex);
 
    if (buttonIndex == [actionSheet destructiveButtonIndex])
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Красная кнопка" message:@"Ты нажал на красную кнопку!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
    }
    else if (buttonIndex == [actionSheet cancelButtonIndex])
    {
        UIAlertView* alert = nil;
    }
    else
        {
            switch (actionSheet.firstOtherButtonIndex)
            {
                case 1:
                {
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Кнопка" message:@"Нажата вторая кнопка" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
                [alert show];
                }
 
                default:
                    {
                    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Третья кнопка" message:@"Нажата третья кнопка!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
                    [alert show];
                    }
                    
            }
        }
}
Добавлено через 6 часов 52 минуты




----------------------------------------



И ещё один вопрос:

Как мне задать номер кнопки для firstOtherButtonIndex?

Например, если у меня 4 кнопки 2 из которых- destructiveButtonIndex и cancelButtonIndex ( с ними всё понятно)
а как обратиться конкретно к определённым кнопкам, которые созданы в
Objective-C
1
otherButtonTitles:@"Кнопка",@"Еще кнопка"
Добавлено через 15 часов 2 минуты
Походив, подумав, я нашёл вот такое решение:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
    //NSLog(@"Была нажата кнопка с номером - %d",buttonIndex);
 
    if (buttonIndex ==0)
        {
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Красная кнопка" message:@"Ты нажал на красную кнопку!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        }
   
    else if (buttonIndex ==1)
        {
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Вторая кнопка" message:@"Ты нажал на вторую кнопку!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        }
 
    else if (buttonIndex ==2)
        {
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Третья кнопка" message:@"Ты нажал на третью кнопку!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        }
    
    else
        {
            UIAlertView* alert = nil;
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 00:47     Кнопки Action Sheet
Посмотрите здесь:

Изменение имени кнопки при нажатии на другую кнопку (в другом view) Objective-C
Подсчет суммы двух чисел при нажатии кнопки Objective-C
Objective-C target-action
Положение кнопки Objective-C
Как полностью изменить цвет Back кнопки в Navigation Bar ? Objective-C
Стили для кнопки Objective-C
Воспроизведение музыки из интернета сразу после нажатия кнопки Objective-C
Objective-C Запуск приложения при трехкратном нажатии кнопки Home
Android Вызов диалога из кнопки в action bar-е
Objective-C Нарисовать линию по клику кнопки
Текст кнопки назад в навигационном контроллере Objective-C
Изменить программно название кнопки Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
04.03.2014, 07:14     Кнопки Action Sheet #2
Почему такая любовь к копированию?

Можно так, если не много else...if, если много - можно литералы поместить в массив:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *titleToShow = nil;
    NSString *messageToShow = nil;
    
    if (buttonIndex == 0) {
        titleToShow = @"Красная кнопка";
        messageToShow = @"Ты нажал на красную кнопку!";
    } else if (buttonIndex == 1) {
        titleToShow = @"Вторая кнопка";
        messageToShow = @"Ты нажал на вторую кнопку!";
    } else if (buttonIndex == 2) {
        titleToShow = @"Третья кнопка";
        messageToShow = @"Ты нажал на третью кнопку!";
    } else {
        return;
    }
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:titleToShow
                                                    message:messageToShow
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
}
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
04.03.2014, 09:37  [ТС]     Кнопки Action Sheet #3
Цитата Сообщение от zulkis Посмотреть сообщение
Почему такая любовь к копированию?
Наглядность

До той конструкции, которую вы придумали ведь нужно дойти, когда опыта не очень много, приходится комбинировать из того, что сразу на ум приходит- в основном из примитивных конструкций
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
04.03.2014, 10:49     Кнопки Action Sheet #4
Цитата Сообщение от Пан_Атаман Посмотреть сообщение
Наглядность
Это не наглядность, это копирование.
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
04.03.2014, 11:19  [ТС]     Кнопки Action Sheet #5
Цитата Сообщение от zulkis Посмотреть сообщение
копирование
спорить не буду- действительно, ещё можно было бы сделать с помощью switch то же самое. Просто такие красивые варианты после нескольких просмотров работающего кода возникают
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
04.03.2014, 18:46     Кнопки Action Sheet #6
Цитата Сообщение от Пан_Атаман Посмотреть сообщение
спорить не буду- действительно, ещё можно было бы сделать с помощью switch то же самое. Просто такие красивые варианты после нескольких просмотров работающего кода возникают
Кроме субъективного впечатления о "красивости" кода есть еще базовые принципы, при соблюдении которых код получается хорошо читаемым, легко модифицируемым, максимально безбажным и так далее. Один из таких принципов - DRY (Don't repeat yourself).
Грубый пример для вашего кода: ПМ сказал: по нажатию на ОК в алерте надо что-то делать, допустим переходить на другой экран. Вы сделали обработчик, для первых двух алертов выставили делегата, для третьего забыли, итог - баг на ровном месте.
Yandex
Объявления
04.03.2014, 18:46     Кнопки Action Sheet
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru