Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

Π’ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° отобраТаСтся Π² Π²ΠΈΠ΄Π΅ сплошного Π±Π΅Π»ΠΎΠ³ΠΎ поля ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Π½Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ значСниями. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это. Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ источник Π΄Π°Π½Π½Ρ‹Ρ… для Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° соотвСтствуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ источником Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… экзСмпляра UIPickerView Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UIPickerViewDataSource, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ обСспСчим соотвСтствиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° условиям этого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² Ρ„Π°ΠΉΠ»Π΅. m:


@interface ViewController () <UIPickerViewDataSource, UIPickerViewDelegate>

@property (nonatomic, strong) UIPickerView *myPicker;

@end


@implementation ViewController


…


Π₯ΠΎΡ€ΠΎΡˆΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ наш ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π²Ρ‹Π±Ρ€Π°Π½ Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… для Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°:


β€” (void)viewDidLoad{

[super viewDidLoad];


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

self.myPicker.dataSource = self;

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

[self.view addSubview: self.myPicker];


}


ПослС этого, ΠΏΠΎΠΏΡ‹Ρ‚Π°Π²ΡˆΠΈΡΡŒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ компилятор Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ прСдупрСТдСния. Π­Ρ‚ΠΈ прСдупрСТдСния ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, внСдрСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» UIPickerViewDataSource. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Command+Shift+O, ввСсти UIPickerViewDataSource ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter. Π’Π°ΠΊ Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ мСсту Π² вашСм ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ опрСдСляСтся Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:


@protocol UIPickerViewDataSource<NSObject>

@required


// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство столбцов для отобраТСния

β€” (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;


// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство строк Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅

β€” (NSInteger)pickerView:(UIPickerView *)pickerView

numberOfRowsInComponent:(NSInteger)component;

@end


Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ здСсь ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово @required? Оно ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ любой класс, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΡΡ‚Π°Ρ‚ΡŒ источником Π΄Π°Π½Π½Ρ‹Ρ… для Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, обязан Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. НапишСм ΠΈΡ… Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° нашСго Π²ΠΈΠ΄Π°:


β€” (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{


if ([pickerView isEqual: self.myPicker]){

return 1;

}


return 0;


}

β€” (NSInteger) pickerView:(UIPickerView *)pickerView

numberOfRowsInComponent:(NSInteger)component{


if ([pickerView isEqual: self.myPicker]){

return 10;

}


return 0;

}


Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ здСсь происходит? Рассмотрим, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² источника:

numberOfComponentsInPickerView: β€” этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π° Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π° Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, сколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² этом Π²ΠΈΠ΄Π΅ Π²Ρ‹Π±ΠΎΡ€Π°;

β€’ pickerView: numberOfRowsInComponent: β€” для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, добавляСмого Π² Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ систСмС, ΠΊΠ°ΠΊΠΎΠ΅ количСство строк Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ экзСмпляр Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, Π° Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ срСдС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния, сколько строк Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² этом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ систСмС ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ всСго с 10 строками для Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅ ΠΈ Π½Π°Π·Π²Π°Π»ΠΈ myPicker.

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ запуститС Π΅Π³ΠΎ Π² эмуляторС iPhone (рис. 1.11). Π₯ΠΌ-ΠΌ-ΠΌ, ΠΈ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это?


Рис. 1.11. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π°, ΠΊΠΎΠ³Π΄Π° нСизвСстно, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π½Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ


По всСй видимости, наш Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° Π·Π½Π°Π΅Ρ‚, сколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΈ сколько строк ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΌ нас ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ тСкст Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС. Π­Ρ‚ΠΎΡ‚ вопрос ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдуСт ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ, ΠΈ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, прСдоставив Π΄Π΅Π»Π΅Π³Π°Ρ‚ для Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°. Π”Π΅Π»Π΅Π³Π°Ρ‚ экзСмпляра UIPickerView Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UIPickerViewDelegate ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ @required.

Нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° UIPickerViewDelegate, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ pickerView: titleForRow: forComponent:. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ индСкс Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΈ индСкс Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ строки Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ экзСмпляр NSString. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, прСдставлСнная NSString, отобразится Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ряду Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ рассматриваСмом случаС я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ просто ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку ΠΊΠ°ΠΊ Β«Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1Β», Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ: Β«Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2Β», Β«Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3Β» ΠΈ Ρ‚. Π΄. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ потрСбуСтся Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойство delegate нашСго Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°:


self.myPicker.delegate = self;


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°:


β€” (NSString *)pickerView:(UIPickerView *)pickerView

titleForRow:(NSInteger)row

forComponent:(NSInteger)component{


if ([pickerView isEqual: self.myPicker]){


/* Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ основаниС, Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрвая строка

(с индСксом 0) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ строка 1. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΡƒΠΆΠ½ΠΎ

ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ +1 ΠΊ индСксу ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. */

result = [NSString stringWithFormat:@"Row %ld", (long)row + 1];


}

return nil;

}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ происходит (рис. 1.12).


Рис. 1.12. Π’ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° с ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ ΠΈ нСсколькими строками


Π’ΠΈΠ΄Ρ‹ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π±ΠΎΡ€Π° Π² iOS 6 ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства showsSelectionIndicator, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NO. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого свойства Π½Π° YES, Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ setShowsSelectionIndicator: Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€:


self.myPicker.showsSelectionIndicator = YES;


Π‘Π½ΠΎΠ²Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создаСм Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии нашСго прилоТСния. Какая польза ΠΎΡ‚ Π²ΠΈΠ΄Π° Π²Ρ‹Π±ΠΎΡ€Π°, Ссли ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²? Π”Π°, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ Apple ΡƒΠΆΠ΅ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΠ»Π°ΡΡŒ ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ прСдоставила Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅. Π’Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ selectedRowInComponent: класса UIPickerView ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ индСкс ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ основаниСм), Π° Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ†Π΅Π»ΠΎΠ΅ число. Π­Ρ‚ΠΎ число Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой индСкс с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ основаниСм, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ строку, которая Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΌ нас ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅.

Если Π²ΠΎ врСмя исполнСния Π²Π°ΠΌ потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния, содСрТащиСся Π² вашСм Π²ΠΈΠ΄Π΅ Π²Ρ‹Π±ΠΎΡ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° смоТСт ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, замСняя ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½ΠΎΠ²ΠΎΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΈΠ· источника ΠΈ ΠΎΡ‚ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°. Для этого Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ содСрТащиСся Π² Π½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅ (это дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reloadAllComponents), Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ содСрТащиСся Π² Π½Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС примСняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ reloadComponent:. Π•ΠΌΡƒ пСрСдаСтся индСкс ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 1.2.

1.5. Π’Ρ‹Π±ΠΎΡ€ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UIDatePicker

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ вашСго прилоТСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя. Для этого Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный ΠΈ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ классом UIDatePicker.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Класс UIDatePicker ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ класс UIPickerView. ЀактичСски UIDatePicker β€” это ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Π²Ρ‹Π±ΠΎΡ€Π°. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Calendar (ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ) Π² iPhone (рис. 1.13).


Рис. 1.13. Π’ΠΈΠ΄ для Π²Ρ‹Π±ΠΎΡ€Π° Π΄Π°Ρ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана


Для Π½Π°Ρ‡Π°Π»Π° объявим свойство Ρ‚ΠΈΠΏΠ° UIDatePicker, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ это свойство ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ нашСго Π²ΠΈΠ΄Π°:


#import Β«ViewController.hΒ»


@interface ViewController ()

@property (nonatomic, strong) UIDatePicker *myDatePicker;

@end


@implementation ViewController


…


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ, инстанцируСм Π²ΠΈΠ΄ для Π²Ρ‹Π±ΠΎΡ€Π° Π΄Π°Ρ‚Ρ‹:


β€” (void)viewDidLoad{

[super viewDidLoad];

self.myDatePicker = [[UIDatePicker alloc] init];

self.myDatePicker.center = self.view.center;

[self.view addSubview: self.myDatePicker];

}


ПослС этого запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ посмотрим, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ выглядит (рис. 1.14).


Рис. 1.14. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²ΠΈΠ΄ для Π²Ρ‹Π±ΠΎΡ€Π° Π΄Π°Ρ‚Ρ‹


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ Π²Ρ‹Π±ΠΎΡ€Π° Π΄Π°Ρ‚Ρ‹ ставится сСгодняшняя Π΄Π°Ρ‚Π°. Начиная Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ инструмСнтами, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стили оформлСния ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, работая со свойством datePickerMode, Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” UIDatePickerMode: