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

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

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

Π­Ρ‚ΠΎΡ‚ подкласс обСспСчиваСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ячСйки ΠΈΠ· сборного Π²ΠΈΠ΄Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° экранС ΠΏΠΎ сСкциям. КаТдая сСкция β€” это Π³Ρ€ΡƒΠΏΠΏΠ° ячССк сборного Π²ΠΈΠ΄Π°, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Однако Π² сборном Π²ΠΈΠ΄Π΅ любая сСкция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° экранС Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. НапримСр, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится своя малСнькая Ρ‚Π°Π±Π»ΠΈΡ†Π° (рис. 5.1).


Рис. 5.1. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π² сборном Π²ΠΈΠ΄Π΅


Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сСкции Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° экранС Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ образуя строки ΠΈ столбцы. ИмСнно эта Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΅Ρ‰Π΅ большСй свободы дСйствий ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅, Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свойства класса ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. А Ссли ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΎΡ‚ стандартных возмоТностСй ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, создайтС для этого собствСнный класс. НапримСр, Ρ‚Π°ΠΊΠΎΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π²Π°ΠΌ потрСбуСтся для создания сборного Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 5.2. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ячСйки совсСм Π½Π΅ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ.


Рис. 5.2. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ для сборного Π²ΠΈΠ΄Π°

5.1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сборных Π²ΠΈΠ΄ΠΎΠ²

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

ВрСбуСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° экранС сборный Π²ΠΈΠ΄.

РСшСниС

Π›ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ экзСмпляром UICollectionView, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² вашСго прилоТСния (Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ полноэкранный сборный Π²ΠΈΠ΄), Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ класс UICollectionViewController.

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

Π‘Π±ΠΎΡ€Π½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠ°ΠΊ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, β€” это элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² качСствС Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. Π˜Ρ‚Π°ΠΊ, создавая ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ сборный Π²ΠΈΠ΄ Π±Ρ‹Ρ‚ΡŒ основным Π²ΠΈΠ΄ΠΎΠΌ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с полноэкранным Π²ΠΈΠ΄ΠΎΠΌ.

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Xcode.

2. Π’ мСню File (Π€Π°ΠΉΠ») Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ New (Новый), Π° Π·Π°Ρ‚Π΅ΠΌ Project (ΠŸΡ€ΠΎΠ΅ΠΊΡ‚).

3. Π‘Π»Π΅Π²Π° Π² качСствС основной ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ iOS, Π° ΠΏΠΎΠ΄ Π½Π΅ΠΉ β€” Application (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π’ ΠΏΡ€Π°Π²ΠΎΠΉ части экрана Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Empty Application (ΠŸΡƒΡΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅), послС Ρ‡Π΅Π³ΠΎ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Next (Π”Π°Π»Π΅Π΅).

4. ΠΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ установлСн Ρ„Π»Π°ΠΆΠΎΠΊ Use Automatic Reference Counting (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ автоматичСский подсчСт ссылок) (рис. 5.3). Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Next (Π”Π°Π»Π΅Π΅).


Рис. 5.3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠŸΡƒΡΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Empty Application) для сборного Π²ΠΈΠ΄Π°


5. ΠŸΠΎΡΠ»Π΅ этого Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° дискС. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ подходящСС для этого мСсто ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Create (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ).

6. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½, создайтС Π² Π½Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ класс ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ ViewController. Π­Ρ‚ΠΎΡ‚ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ UICollectionViewController. Π’Π°ΠΌ Π½Π΅ понадобится. xib-Ρ„Π°ΠΉΠ» для этого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, поэтому ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ этой возмоТности (рис. 5.4).


Рис. 5.4. ДобавляСм Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ класс сборного Π²ΠΈΠ΄Π°


7. ΠΠ°ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ„Π°ΠΉΠ» AppDelegate.m (это Ρ„Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния) ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ, послС Ρ‡Π΅Π³ΠΎ создайтС экзСмпляр сборного Π²ΠΈΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ сдСлайтС этот сборный Π²ΠΈΠ΄ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π° вашСго прилоТСния, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь:


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


/* Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π° с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹

ΠΈΠ·ΡƒΡ‡ΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π½Π°ΡˆΠΈΠΌ сборным

Π²ΠΈΠ΄Π°ΠΌ */

ViewController *viewController = [[ViewController alloc]

initWithCollectionViewLayout: nil];


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];


/* Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ сборный Π²ΠΈΠ΄ Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ для нашСго ΠΎΠΊΠ½Π° */

self.window.rootViewController = viewController;

[self.window makeKeyAndVisible];

return YES;

}

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ запуститС вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈ выдаст сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для вашСго сборного Π²ΠΈΠ΄Π°. И здСсь срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния дСйствуСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ нСльзя. Но ΠΌΡ‹ просто ΠΏΠΎΠΊΠ° Π½Π΅ обсудили, ΠΊΠ°ΠΊ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² сборныС Π²ΠΈΠ΄Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠΊΠ° оставим всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π”Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… сборных Π²ΠΈΠ΄ΠΎΠ².

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΡƒΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π°, ΠΈ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π» Π½Π° устройствС вСсь экран. Однако Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, входящий Π² состав Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ просто ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UICollectionView, воспользовавшись Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ initWithFrame: collectionViewLayout:.

Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, трСбуСтся просто ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сборный Π²ΠΈΠ΄, воспользовавшись ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ смоТСтС Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сборный Π²ΠΈΠ΄ Π² качСствС Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, просто Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ addSubview: этого Π²ΠΈΠ΄Π° с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ экзСмпляр вашСго сборного Π²ΠΈΠ΄Π° этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств delegate ΠΈ dataSource сборного Π²ΠΈΠ΄Π° Π·Π°Π΄Π°Π½Ρ‹ Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ UICollectionViewDelegate ΠΈ UICollectionViewDataSource. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π°. Π”Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅ описаны всС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для наполнСния сборного Π²ΠΈΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· источника Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ рСагирования Π½Π° события с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°.

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

Π Π°Π·Π΄Π΅Π» 5.0.

5.2. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ источника Π΄Π°Π½Π½Ρ‹Ρ… сборному Π²ΠΈΠ΄Ρƒ

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

ВрСбуСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ для сборного Π²ΠΈΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° экран.

РСшСниС

ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ сборному Π²ΠΈΠ΄Ρƒ источник Π΄Π°Π½Π½Ρ‹Ρ…, воспользовавшись свойством dataSource класса UICollectionView. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UICollectionViewDataSource. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, само собой разумССтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ источника Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства этого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, относящиСся ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ required.

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… сборного Π²ΠΈΠ΄Π°, ΠΊΠ°ΠΊ ΠΈ источник Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° прСдоставлСниС сборному Π²ΠΈΠ΄Ρƒ достаточного для отобраТСния Π½Π° экранС количСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Бпособ отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° экранС Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΡŽ источника Π΄Π°Π½Π½Ρ‹Ρ… β€” это Π·Π°Π΄Π°Ρ‡Π° ΠΌΠ°ΠΊΠ΅Ρ‚Π°. Π―Ρ‡Π΅ΠΉΠΊΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² сборном Π²ΠΈΠ΄Π΅, Π² ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ источником Π΄Π°Π½Π½Ρ‹Ρ… сборного Π²ΠΈΠ΄Π°.

Π’ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° UICollectionViewDataSource, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ трСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² вашСм источникС Π΄Π°Π½Π½Ρ‹Ρ….

β€’ collectionView: numberOfItemsInSection: β€” этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ NSInteger, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ сборному Π²ΠΈΠ΄Ρƒ количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ сСкции. ЗадаваСмая сСкция сообщаСтся Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ собой индСкс с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ основаниСм для Π΄Π°Π½Π½ΠΎΠΉ сСкции. ИмСнно Ρ‚Π°ΠΊ происходит ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ.

β€’ collectionView: cellForItemAtIndexPath: β€” ваша рСализация этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ экзСмпляр UICollectionViewCell, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ячСйкС, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Π΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ индСксный ΠΏΡƒΡ‚ΡŒ. Класс UICollectionViewCell наслСдуСт ΠΎΡ‚ UICollectionReusableView. ЀактичСски любая доступная для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ячСйка, пСрСдаваСмая сборному Π²ΠΈΠ΄Ρƒ для отобраТСния, Π΄ΠΎΠ»ΠΆΠ½Π° прямо ΠΈΠ»ΠΈ косвСнно Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ UICollectionReusableView, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² этой Π³Π»Π°Π²Π΅. Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ указываСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ cellForItemAtIndexPath этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ индСксы section ΠΈ row этого элСмСнта ΠΈΠ· индСксного ΠΏΡƒΡ‚ΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° сборного Π²ΠΈΠ΄Π° (ViewController.m). Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΡ‹ создали Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ рассмотрСнныС Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ источника Π΄Π°Π½Π½Ρ‹Ρ… сборного Π²ΠΈΠ΄Π°:


#import Β«ViewController.hΒ»


@implementation ViewController


/* ΠŸΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ собираСмся Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сСкций */

β€” (NSInteger)collectionView:(UICollectionView *)collectionView

numberOfItemsInSection:(NSInteger)section{

return 0;

}


/* ΠœΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ сСкции Π² сборный Π²ΠΈΠ΄, поэтому для Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠΌ здСсь nil */