Как я кодирую зеленую кнопку в UIActionSheet?

Я использую код:

  {
        randomstatus=0;
        msg=[[NSString alloc]initWithFormat:@"Good job, do you want to continue?"];
        UIActionSheet *actionSheet=[[UIActionSheet alloc]initWithTitle:msg delegate:self cancelButtonTitle:@"No" destructiveButtonTitle:@"Yes" otherButtonTitles:nil];
        [actionSheet showInView:self.view];
        [actionSheet release];
        [msg release];
    }   

Я не хочу изменять код, но мне нужен "destructiveButton" для зеленого вместо красного. Действительно ли это возможно, или я должен использовать другую кнопку?

5
задан Peter Hosey 21 March 2010 в 22:35
поделиться

2 ответа

К сожалению, нет никаких официально предоставленных методов для настройки кнопок UIActionSheet.

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

Хотя изменение цвета кнопки на листе UIActionSheet не имеет прямого отношения к этому вопросу, предыдущий вопрос: iPhone Отключение кнопок UIActionSheet демонстрирует несколько способов добавления пользовательских представлений в UIActionSheet.

2
ответ дан 14 December 2019 в 19:09
поделиться

Не существует "стандартного" способа изменения внешнего вида кнопок. Любые способы, которые вы используете, по сути, будут хаками и могут сломаться в будущем, если Apple изменит компонент UIActionSheet. Они также могут привести к тому, что ваше приложение будет отклонено, если они расстроят богов App-Store.

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

Это не должно быть слишком сложно. Вам понадобится вид, который является фоном для листа действий, который можно получить, сделав скриншот стандартного UIActionSheet и немного пофотошопив. Затем добавьте ваши пользовательские кнопки в качестве вложенных представлений. Немного анимации при вызове представления, и все готово.

Я бы стремился к тому, чтобы ваш класс реализовывал все методы UIActionSheet, а также выполнял методы, которые ожидает UIActionSHeetDelegate. Таким образом, вы сможете подставить его в любое место, где в противном случае вы бы использовали родной UIActionSheet

.
3
ответ дан 14 December 2019 в 19:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: