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

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

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

β€’ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ инстанцировав класс UITableView.

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


Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.9, Π° ΠΏΠΎΠΊΠ° ΠΌΡ‹ просто займСмся созданиСм Ρ‚Π°ΠΊΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π²ΠΈΠ΄Π°.

Класс UITableView инстанцируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° initWithFrame: style:. Π”Π°Π»Π΅Π΅ пСрСчислСны ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ значСния этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

β€’ initWithFrame β€” это ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° CGRect. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ располоТСн Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Π² Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Π° просто ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π°ΠΊΡ€Ρ‹Π²Π°Π»Π° Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ Π²ΠΈΠ΄, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства bounds Π²ΠΈΠ΄Π° с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ.

β€’ style β€” это ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° UITableViewStyle, опрСдСляСмый ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


typedef NS_ENUM(NSInteger, UITableViewStyle) {

UITableViewStylePlain,

UITableViewStyleGrouped

};


На рис. 4.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΈ сгруппированным Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ.


Рис. 4.1. Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²


ΠœΡ‹ заполняСм Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ источник Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.1. Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°ΠΌΠΈ. Π”Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UITableViewDelegate. Π”Π°Π»Π΅Π΅ пСрСчислСны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ этого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ.

β€’ tableView: viewForHeaderInSection: β€” вызываСтся Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ трСбуСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ€Π°Π·Π΄Π΅Π»Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ», Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство ячССк ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ». Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ обсудим всС эти участки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ» β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ экзСмпляры UIView. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² вашСго Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π²ΠΈΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. О Π²Π΅Ρ€Ρ…Π½ΠΈΡ… ΠΈ Π½ΠΈΠΆΠ½ΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ»Π°Ρ… Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.5.

β€’ tableView: viewForFooterInSection: β€” Π΄Π΅Π»Π΅Π³Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ tableView: viewForHeaderInSection:, Π½ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΈΠ΄ с Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ»ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Как ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ Ссли ΠΎΠ½ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π΅Π³ΠΎ слСдуСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ здСсь. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΡ… ΠΈ Π½ΠΈΠΆΠ½ΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ»Π°Ρ… Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.5.

β€’ tableView: didEndDisplayingCell: forRowAtIndexPath: β€” вызываСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅-Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π² Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ячСйка ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ с экрана. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ для Π²Ρ‹Π·ΠΎΠ²Π° Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· памяти, Ссли эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ассоциированы с ячСйкой, которая ΡƒΡˆΠ»Π° с экрана, Π° Π²Ρ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ связанныС с Π½Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π°ΠΌ большС Π½Π΅ понадобятся.

β€’ tableView: willDisplayCell: forRowAtIndexPath: β€” этот ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ячСйка Π²ΠΎΡ‚-Π²ΠΎΡ‚ отобразится Π½Π° экранС.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π΄Π΅Π»Π΅Π³Π°Ρ‚ для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, просто ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² качСствС значСния свойства delegate экзСмпляра UITableView Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UITableViewDelegate. Если Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠΌ вашСго Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


#import Β«ViewController.hΒ»


@interface ViewController () <UITableViewDelegate>

@property (nonatomic, strong) UITableView *myTableView;

@end


@implementation ViewController


β€” (void)viewDidLoad{

[super viewDidLoad];


self.myTableView = [[UITableView alloc]

initWithFrame: self.view.bounds

style: UITableViewStylePlain];


self.myTableView.delegate = self;


[self.view addSubview: self.myTableView];


}


@end


МоТно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π΅Π»Π΅Π³Π°Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события, отправляСмыС Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ. НапримСр, Ρ‚Π°ΠΊΠΈΠ΅ события происходят, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ выдСляСт ΠΎΠ΄Π½Ρƒ ΠΈΠ· ячССк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π»ΠΈΠ±ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ трСбуСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ высоту всСх входящих Π² Π½Π΅Π³ΠΎ ячССк.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚-Π΄Π΅Π»Π΅Π³Π°Ρ‚ обязан ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° сообщСния, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ UITableViewDelegate ΠΊΠ°ΠΊ @required. ΠžΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сообщСния Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° всС сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ замыслу, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄.

БообщСния, отправляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρƒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, нСсут с собой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρƒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π» Π΄Π°Π½Π½ΠΎΠ΅ событиС Π² своСм Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Π²ΠΈΠ΄Π΅) Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ послал ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ сообщСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρƒ:


β€” (CGFloat) tableView:(UITableView *)tableView

heightForRowAtIndexPath:(NSIndexPath *)indexPath{

if ([tableView isEqual: self.myTableView]){

return 100.0f;

}

return 40.0f;

}

}


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

4.1. НаполнСниС Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

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

ВрСбуСтся Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

РСшСниС

НСобходимо ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UITableViewDataSource, ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ экзСмпляру Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π—Π°Ρ‚Π΅ΠΌ, отвСчая Π½Π° сообщСния источника Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для вашСго Π²ΠΈΠ΄Π°. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ объявим. h-Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° нашСго Π²ΠΈΠ΄Π°. ПозТС Π² ΠΊΠΎΠ΄Π΅ для этого Π²ΠΈΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ создана Ρ‚Π°Π±Π»ΠΈΡ†Π°:


#import Β«ViewController.hΒ»


static NSString *TableViewCellIdentifier = @"MyCells";


@interface ViewController () <UITableViewDataSource>

@property (nonatomic, strong) UITableView *myTableView;

@end


ЭкзСмпляр TableViewCellIdentifier содСрТит ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ячССк Π² Π²ΠΈΠ΄Π΅ статичСской строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Как Π²Ρ‹ вскорС ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, каТдая ячСйка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈ это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании ячССк. Пока считайтС эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ просто ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ всСх ячССк Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° β€” Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС этого достаточно.

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ viewDidLoad ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° создадим Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈ присвоим Π΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ…:


β€” (void)viewDidLoad{

[super viewDidLoad];


self.myTableView =

[[UITableView alloc] initWithFrame: self.view.bounds

style: UITableViewStylePlain];


[self.myTableView registerClass: [UITableViewCell class]

forCellReuseIdentifier: TableViewCellIdentifier];


self.myTableView.dataSource = self;


/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ. */

self.myTableView.autoresizingMask =

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;


[self.view addSubview: self.myTableView];


}


Π’ этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° всС элСмСнтарно, ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° registerClass: forCellReuseIdentifier:, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π² экзСмплярС Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π§Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄? ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ registerClass этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° просто ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя класса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ‚ΠΈΠΏΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки. ВсС ячСйки Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прямыми ΠΈΠ»ΠΈ нСпрямыми ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ класса UITableViewCell. Π‘Π°ΠΌ этот класс прСдоставляСт программистам довольно ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π». Но ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ этот класс ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ β€” достаточно произвСсти ΠΎΡ‚ Π½Π΅Π³ΠΎ подкласс, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ классу Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π». Π˜Ρ‚Π°ΠΊ, возвращаСмся ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ registerClass Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Π°ΠΌ потрСбуСтся ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ имя класса ячССк этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ forCellReuseIdentifier. Π’ΠΎΡ‚ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΡ‹ ассоциируСм классы Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ: ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ заполняСтС Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ dequeueReusableCellWithIdentifier: forIndexPath: Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ячСйку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ссли Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅Ρ‚ ячССк, доступных для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования. ВсС это просто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсиях iOS SDK программистам ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти ячСйки ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π΅ ΡƒΠ΄Π°Π²Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±Ρ‹Ρ‚ΡŒ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования.