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

UISegmentedControls

Познавая глубже интерфейс iOS, понимаешь насколько он удобен для пользователя. Сегодня мы рассмотрим UISegmentedControls – сегмент из нескольких групп кнопок. Это очень распространенный контрол не только в iOS. Его можно встретить и в стандартных приложениях iOS, к примеру — Карты.

Перейдем непосредственно к коду. Создам новый проект на основе шаблона Single View Application. Свой проект я назвал SimpleSegmentedControl.
Перейдем в ViewController.h и внесем в него следующие изменения:
<code data-result="[object Object]">#import &lt;UIKit/UIKit.h&gt;

@interface ViewController : UIViewController

@property (nonatomic, retain) IBOutlet UISegmentedControl *control;
@property (nonatomic, retain) IBOutlet UILabel *selectedSegmentText;

- (IBAction)didSelectSegment:(id)sender;
- (void)updateText:(NSInteger)selIndex;

@end</code>
Кроме самого UISegmentedControl я добавил еще надпись, текст которой будет устанавливаться в зависимости от выбранного сегмента. Кроме этого — добавил два метода. Первый (didSelectSegment) будет вызываться при смене сегмента, а updateText будет обновлять текст вышедобавленной надписи.
Теперь допишем реализацию наших методов. Для этого изменим файл ViewController.m.
<code data-result="[object Object]">#import "ViewController.h"

@implementation ViewController

@synthesize control;
@synthesize selectedSegmentText;

- (void)viewDidLoad 
{
    [super viewDidLoad];

    [self updateText:control.selectedSegmentIndex];
}

- (IBAction)didSelectSegment:(id)sender {
    [self updateText:[sender selectedSegmentIndex]];
}

- (void)updateText:(NSInteger)selIndex {
    switch (selIndex) {
        case 0:
            selectedSegmentText.text = @"Вы выбрали первый сегмент";
            break;
        case 1:
            selectedSegmentText.text = @"Вы выбрали второй сегмент";
            break;
        case 2:
            selectedSegmentText.text = @"Вы выбрали третий сегмент";
            break;             
        case 3:
            selectedSegmentText.text = @"Вы выбрали четвертый сегмент";
            break;            

        default:
            break;
    }
}

@end</code>
В методе viewDidLoad мы передаем выбранный сегмент в метод updateText, который, как я уже говорил, устанавливает текст надписи. Эту же функцию выполняет метод didSelectSegment, но вызывается он при изменении сегмента.
Этого кода достаточно для полноценной работы сегмента. Осталось добавить объекты интерфейса и связать их с кодом. Для этого перейдем в ViewController.xib и выполним следующий действия:
  • с библиотеки объектов добавим UISegmenteControl и свяжем его с control;
  • такую же операцию проделаем для UILabel и selectedSegmentText;
  • метод didSelectSegment свяжем с действием Value Changed только что добавленного сегмента.
Исходный код этого проекта можно скачать здесь.