Как мне кодировать зеленую кнопку в UIActionSheet? - PullRequest
5 голосов
/ 22 марта 2010

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

  {
        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" была зеленой, а не красной. Это возможно, или мне нужно использовать другую кнопку?

Ответы [ 2 ]

3 голосов
/ 22 марта 2010

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

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

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

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

2 голосов
/ 22 марта 2010

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

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

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

...