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

Переключатель (UISwitch)

Существует множество програм (в том числе и нативных), которые используют переключатель. В этом примере я покажу как добавить переключатель в свое приложение. Для начала создадим проект на основе View Based Application и назовем его SwitchTutorial.

 

В первую очередь, изменим интерфейс класса SwitchTutorialViewController:

 

<code data-result="[object Object]">#import &lt;UIKit/UIKit.h&gt;

@interface SwitchTutorialViewController : UIViewController {
    UISwitch *mySwitch;
}

@property (nonatomic, retain) IBOutlet UISwitch *mySwitch;

@end</code>

 

Соответственно изменим реализацию этого класса:

 

 

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

@implementation SwitchTutorialViewController

@synthesize mySwitch;

- (void)dealloc
{
    self.mySwitch = nil;
    [super dealloc];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.mySwitch = nil;
}

#pragma mark - View lifecycle
- (void)viewDidLoad
{
    [super viewDidLoad];

    mySwitch.on = NO;
    [mySwitch setOn:YES animated:YES];
}

@end</code>

 

В методе viewDidLoad я указал два примера приваивания значения переключателю. Строка mySwitch.on = NO; выключает его без анимации, а [mySwitch setOn:YES animated:YES]; — включает с использованием анимации. По сути, строка mySwitch.on = NO;и [mySwitch setOn:YES animated:NO]; эквивалентны я использовал первый вариант лишь потому, что он короче. Теперь добавьте в xib-файл сам переключатель с баблиотеки объектов и свяжите его с кдом.

 

Менять значение переключателя можно не только программно. Это может делать сам пользователь. А чтобы отлавливать этот момент — так же как и кнопку, переключатель следует свзязать с каким-то методом. Добавим такой метод в интерфейс класса SwitchTutorialViewController. Свой метод я назвал mySwitchStateChanged. Реализация этого метода будет выглядеть так:

 

 

<code data-result="[object Object]">-(IBAction)mySwitchStateChanged {
    if (mySwitch.on) {
        NSLog(@"Переключатель: включённое состояние");
    } else {
        NSLog(@"Переключатель: выключенное состояние");
    }
}</code>

 

Теперь свяжите только что добавленный метод с действием переключателя Value Changed (обратите внимание, что это не кнопка в которой мы обычно связываем методы с действием Touch up Inside). Если все сделано правильно — при изменении состояния переключателя нам в консоль будет выводиться информация о состоянии.

 

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

 

Так же, у нас на форуме можно скачать исходный код кастомной реализации переключателя ссылка.