|
Май
23
|
Предупредительные надписи встречаются часто и выполняют самые разные функции. Часто они выводятся при первом запуске в качестве приветствия. С их помощью программа информирует пользователя о нужных и важных моментах, просит подождать, сообщает об ошибках, предупреждает.
Выглядят такие надписи просто отлично и подходят к интерфейсу практически любой игры/приложения. Пользователю может показаться, что перед ним плод тяжкого труда, тогда как на деле это всего пара строк кода.
Для вывода представленного выше предупреждения (”UIAlertView“) необходимо добавить следующее:
1 2 3 | UIAlertView *simpleAlert = [[UIAlertView alloc] initWithTitle:@"Alert's title" message:@"This is an alert's message." delegate:self cancelButtonTitle:@"and the" otherButtonTitles:@"buttons",nil]; [simpleAlert show]; [simpleAlert release]; |
Предупреждение можно вывести в любой момент, например, в методе “viewDidLoad” или по нажатию кнопки. Если в предупреждении больше двух кнопок, отображаться они будут в столбец, а не в строку.

Если не добавить к классу протокол “UIAlertViewDelegate” и не внедрить метод “alertView:clickedButtonAtIndex:“, предупреждение исчезнет лишь после щелчка по одной из кнопок. Протокол добавляется в заголовочный файл класса:
1 | @interface MyView : UIViewController <UIAlertViewDelegate> { |
При наличии более чем одного протокола разделите их запятыми: <oneProtocol, theOtherProtocol>. Теперь в реализацию файла (.m) добавьте следующий метод:
1 2 3 4 5 6 7 8 | - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 1) { // действие } else if (buttonIndex == 2) { // действие } } |
Как обычно, у первой кнопки (в 99% случаев это <cancel>) индекс = 0. Если есть несколько “сложных предупреждений”, у каждого из которых своя задача, лучше использовать для них тэги и проверять в “alertView:clickedButtonAtIndex:“, какое значение у обратившегося к этому методу тэга предупреждения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | UIAlertView *complexAlert = [[UIAlertView alloc] initWithTitle:@"Complex Alert" message:@"Select an action" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Sure",@"Not sure",nil]; complexAlert.tag = 1; [complexAlert show]; [complexAlert release]; - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if ([alertView tag] == 1) { if (buttonIndex == 1) { // действие } else if (buttonIndex == 2) { // действие } } else { // действие } } |
Вот практически и все, что нужно знать о предупреждениях. Чтобы окно через пару секунд исчезло (например, в случае с приветствием или активацией опции по умолчанию), руководствуйтесь приведенным ниже примером:
1 2 3 4 5 6 7 8 9 10 | autoAlertView = [[UIAlertView alloc] initWithTitle:@"Auto-dismissed Alert" message:@"This alert will be dismissed in 5 seconds." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; userDismissed = NO; [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(dismissAlert) userInfo:nil repeats:NO]; [autoAlertView show]; -(void)dismissAlert { if (userDismissed) return; [autoAlertView dismissWithClickedButtonIndex:0 animated:YES]; [autoAlertView release]; } |
Вот и все. Удачи.


Август 29th, 2009 at 14:05
Было бы еще неплохо урок о красивых кастомизированных алертах