С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

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

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

04.03.2014, 00:47. Просмотров 855. Ответов 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;
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кнопки Action Sheet (Objective-C):

target-action - Objective-C
Опять не могу толком разобраться в следующей теме. Можете конкретным кодом пояснить взаимодействие Target-Action? Допустим у нас есть...

Вызов диалога из кнопки в action bar-е - Программирование Android
Закинул кнопочку в action bar при нажатии на которую должен создаваться диалог, но вылетает ошибка. Поискав в интернете причины попробовал...

Flash CS 4. Как сделать Action у кнопки? - Flash
У MX 2004 знаю - там просто нажимаешь Action. А в Adobe Flash CS 4 оно пишет: Current selection cannot have actions applied to it....

Как расширить ссылку из Controller/Action/Id до Contr/Action/Category/Id ? - C# MVC
Здравствуйте, Дорогие форумчане! Давно не брался за ASP, поэтому задаю несколько глупый и для кого-то очень простой вопрос: как...

Ошибка каскадных таблиц (Specify ON DELETE NO ACTION or ON UPDATE NO ACTION) - C#
Здравствуйте. Возникла проблема с созданием таблицы. Ошибка в Package Manager Console public class...

Как сделать так, чтобы при нажатии кнопки Предосмотр форма отправляла данные в 'add.asp?action=preview' ? - C# ASP.NET
... Есть форма с несколькими полями. И есть две кнопки - Предосмотр и Занести. Вопрос: как сделать так, чтобы при нажатии кнопки...

5
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
04.03.2014, 07:14 #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];
}
1
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
04.03.2014, 09:37  [ТС] #3
Цитата Сообщение от zulkis Посмотреть сообщение
Почему такая любовь к копированию?
Наглядность

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

Qt Style Sheet - C++ Qt
Добрый день, у меня появились сегодня два вопроса: Как исправить этот баг. Как сделать Vertical Line другим цветом. 1. Вот...

QTabWidget Style Sheet - C++ Qt
Добрый день!:) Мне нужно закрасить этот кусок: Но у меня не получается реализовать это вот этим кодом: QTabWidget{ ...

Android Delphi Share Sheet - Delphi FireMonkey
Доброго времени суток! Столкнулся с такой проблемкой, не могу понять как добавить свое приложение в Share Sheet или Share List вобщем...

Написать функцию в google sheet - JavaScript
Помогите написать функцию которая с помошью параметра получает текст и целое число.Функция должна посчитать сколько раз в тексте...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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