iOS. Приемы программирования - страница 24



и Off@2x.png (для сетчатого дисплея), а также поместил здесь разновидности изображений для обычного дисплея. Теперь нам предстоит создать переключатель, но присвоить ему заказные изображения «включено» и «выключено». Для этого воспользуемся следующими свойствами UISwitch:

onImage – как указано ранее, это изображение будет использоваться, когда переключатель включен;

• offImage – это изображение соответствует переключателю в состоянии «выключено».

А вот код, позволяющий добиться такого эффекта:


>– (void)viewDidLoad

>{

>[super viewDidLoad];


>/* Создаем переключатель */

>self.mainSwitch = [[UISwitch alloc] initWithFrame: CGRectZero];

>self.mainSwitch.center = self.view.center;

>/* Убеждаемся, что переключатель не выглядит размытым в iOS-эмуляторе */

>self.mainSwitch.frame = [self roundedValuesInRect: self.mainSwitch.frame];

>[self.view addSubview: self.mainSwitch];


>/* Оформляем переключатель */

>self.mainSwitch.onImage = [UIImage imageNamed:@"On"];

>self.mainSwitch.offImage = [UIImage imageNamed:@"Off"];

>}

См. также

Раздел 1.2.

1.4. Выбор значений с помощью UIPickerView

Постановка задачи

Необходимо предоставить пользователю приложения возможность выбирать значения из списка.

Решение

Воспользуйтесь классом UIPickerView.

Обсуждение

Вид выбора (Picker View) – это элемент графического интерфейса, позволяющий отображать для пользователей списки значений, из которых пользователь затем может выбрать одно. В разделе Timer (Таймер) приложения Clock (Часы) в iPhone мы видим именно такой пример (рис. 1.10).


Рис. 1.10. Вид выбора, расположенный в верхней части экрана


Как видите, в отдельно взятом виде выбора содержится два независимых визуальных элемента, один слева, другой справа. В левой части вида отображаются часы (0, 1, 2 и т. д.), а в правой – минуты (18, 19, 20, 21, 22 и т. д.). Два этих элемента называются компонентами. В каждом компоненте есть строки (Rows). На самом деле любой элемент в любом компоненте представлен строкой, как мы вскоре увидим. Например, в левом компоненте 0 hours – это строка, 1 – это строка и т. д.

Создадим вид выбора в виде нашего контроллера. Если вы не знаете, где находится исходный код того вида, в котором расположен контроллер, обратитесь к разделу 1.2, где обсуждается этот вопрос.

Сначала перейдем к файлу реализации. m контроллера нашего вида и определим в нем вид выбора:


>@interface ViewController ()

>@property (nonatomic, strong) UIPickerView *myPicker;

>@end


>@implementation ViewController


>…

>А теперь создадим вид выбора в методе viewDidLoad контроллера нашего вида:

>– (void)viewDidLoad{

>[super viewDidLoad];


>self.view.backgroundColor = [UIColor whiteColor];


>self.myPicker = [[UIPickerView alloc] init];

>self.myPicker.center = self.view.center;

>[self.view addSubview: self.myPicker];


>}


В данном примере необходимо отметить, что вид выбора выравнивается по центру того вида, в котором находится. Если мы запустим это приложение в эмуляторе iOS 7, то увидим пустой экран. Дело в том, что в iOS 7 сам элемент для выбора белый и мы видим фон контроллера вида.

Вид выбора отображается в виде сплошного белого поля потому, что мы еще не наполнили его какими-либо значениями. Сделаем это. Итак, нам потребуется указать источник данных для вида выбора, а потом убедиться в том, что контроллер вида соответствует протоколу, требуемому источником данных. Источник данных экземпляра UIPickerView должен подчиняться протоколу UIPickerViewDataSource, так что обеспечим соответствие данного вида условиям этого протокола в файле. m: