ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C часть 2

Выпадающее меню с пикером (UIActionPicker)

 

На этом сайте есть два замечательных примера, с которыми вы наверняка знакомы. Это Выпадающее меню (UIActionSheet) и Знакомство с PickerView. По отдельности эти примеры очень простые и практичные, но если вы попытаетесь их совместить (как на картинке выше) — красивого кода не получится. Для решения этой проблемы я написал собственный класс, которым хочу с вами поделиться.

 

Для начала, создадим проект на основе шаблона  Single View Application и назовем его ActionPicker. Теперь скачайта по этой ссылкеархив с классом UNActionPicker, затем распакуйте и добавьте его в проект.

 

Свой класс я постарался сделать максимульно простым и удобным. Для его использования нам прийдется написать совсем не много кода. Интерфейс класса ViewController мы трогать вообще не будем. Достаточно внести изменения лишь в его реализацию (ViewController.m):

 

<code data-result="[object Object]">#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSArray *dataSource = [NSArray arrayWithObjects:
                           @"Objective C", 
                           @"C",
                           @"C++",
                           @"Java",
                           @"Pascal",
                           @"Delphi", nil];

    UNActionPicker *actionPicker = [[UNActionPicker alloc] initWithItems:dataSource title:@"iMaladec"];
    [actionPicker setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
    [actionPicker setCloseButtonTitle:@"Done" color:[UIColor blackColor]];
    actionPicker.delegate = self;
    [actionPicker showInView:self.view];
}

- (void)didSelectItem:(id)item {
    NSLog(@"%@", item);
}

@end</code>

 

Вы наверняка заметили, что работа с этим классом очень похожа на работу с обычным UIActionSheet, разница лишь в том, что при инициализации мы передаем массив объектов, которые будут выводиться в UIPickerView и надпись. Затем устанавливаем надпись и цвет кнопки закрытия. Чтобы по закрытию наш класс вернул выбранное значение — устанавливаем делегат (объект которому будет возвращаться значение). Для отображение всей этой «кухни» на экране используем знакомый нам метод showInView. При нажатии на кнопку закрытия будет вызван метод didSelectItem, в который возвращается выбранное значение. В нашем случае, это значение мы выводим в консоль.

 

Исходный код этого проекта можно скачать здесь и отдельно класс UNActionPicker.