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

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

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

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСимущСствами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π΅Ρ‚ раскадровка, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с конструктором интСрфСйсов. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ: ΠΎΠ±ΠΎ всСм Π²Π°ΠΆΠ½ΠΎΠΌ рассказано Π² этой Π³Π»Π°Π²Π΅.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с раскадровками ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экран, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ содСрТимым, называСтся сцСной. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ сцСной ΠΈ раскадровкой Π² iPhone ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π° ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π²ΠΈΠ΄Π°. Π’Π΅ΡΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ сцСны отобраТаСтся Π½Π° экранС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, соотвСтствСнно, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ воспринимаСт эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. На iPad ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ сцСны, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π° довольно большой экран.

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

6.1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² раскадровку Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°

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

ВрСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколькими ΠΊΠΎΡ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΎΠ² Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, построСнном Π½Π° основС раскадровки.

РСшСниС

Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ°ΠΊ исходный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ раскадровки.

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

Если Π²Ρ‹ создали Π² Xcode Π½ΠΎΠ²ΠΎΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, воспользовавшись шаблоном Single View Application (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с СдинствСнным Π²ΠΈΠ΄ΠΎΠΌ), Ρ‚ΠΎ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° раскадровок: Main_iPhone.storyboard ΠΈ Main_iPad.storyboard. Если ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ… Π² конструкторС интСрфСйса, Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° примСняСтся Π² Π½ΠΈΡ… Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. На рис. 6.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ содСрТимоС простого Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° раскадровки для iPhone.


Рис. 6.1. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта Ρ„Π°ΠΉΠ»Π° раскадровки


Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ раскадровки Π½Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π½Π° холстС раскадровки.

2. Π’ мСню Edit (ΠŸΡ€Π°Π²ΠΊΠ°) Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Embed in (Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ), Π° Π·Π°Ρ‚Π΅ΠΌ Navigation Controller (Навигационный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€) (рис. 6.2).


Рис. 6.2. Активизация ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅


Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΏΡ€Π°Π²ΠΈΡ‚Π΅ΡΡŒ с этим, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² раскадровкС прСвратился Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (рис. 6.3).


Рис. 6.3. Навигационный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ раскадровки

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

Π Π°Π·Π΄Π΅Π» 6.0.

6.2. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΠ΄Π½ΠΎΠ³ΠΎ экрана Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ

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

НСобходимо ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ сцСны Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ раскадровку.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ сСгвСями, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ»Π°Π²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹.

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

Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ инструкции ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 6.1, Π³Π΄Π΅ Π² раскадровкС ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Рассмотрим ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм сСгвССв. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ собираСмся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° экранС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 6.4.


Рис. 6.4. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ; Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π° Π΅ΡΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°


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


Рис. 6.5. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π°; связь срабатываСт ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ


Π’ конструкторС интСрфСйса Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали сСгвСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄Π°. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° сСгвСС Π² инспСкторС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (Attribute Inspector), присвойтС Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ pushSecondViewController (рис. 6.6).


Рис. 6.6. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСгвСю


ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: Π° Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ΅Π½ этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сначала Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ, допустимо Π»ΠΈ сСйчас Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ сСгвСй. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ тСкст, находящийся Π² тСкстовом ΠΏΠΎΠ»Π΅, ΠΈ, Ссли это ΠΏΠΎΠ»Π΅ окаТСтся пустым, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран. ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π°, называСтся shouldPerformSegueWithIdentifier: sender:, ΠΎΠ½ относится ΠΊ классу UIViewController. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° NSString, записываСмоС Π² Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ shouldPerformSegueWithIdentifier, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ сСгвСя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ систСма. ПослС этого Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ YES, Ссли ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ сСгвСй вас устраиваСт, ΠΈ NO β€” Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Если Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ NO, Ρ‚ΠΎ сСгвСй с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Но Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π΄Π°Π² Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, β€” бСзусловно, порочная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ΠΏΠΎΠ»Π΅ оказываСтся пустым, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ для Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠ°ΠΊ Π½Π° рис. 6.7.


Рис. 6.7. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ смоТСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Π²Π΅Π΄Π΅Ρ‚ тСкст Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅


Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ соСдинили тСкстовоС ΠΏΠΎΠ»Π΅ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π° (ΠΏΠΎΠ»Π΅ выступаСт Π² качСствС Π°ΡƒΡ‚Π»Π΅Ρ‚Π° для этого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Π³ΠΎ свойству text, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сСгвСй:


#import Β«ViewController.hΒ»

#import Β«SecondViewController.hΒ»


@interface ViewController () <UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *textField;

@end


@implementation ViewController


β€” (void) viewDidLoad{

[super viewDidLoad];

self.title = @"First Screen";

}


β€” (BOOL) textFieldShouldReturn:(UITextField *)textField{

[textField resignFirstResponder];

return YES;

}


β€” (void) displayTextIsRequired{


UIAlertView *alert = [[UIAlertView alloc]

initWithTitle: nil

message:@"Please enter some text in the text field"

delegate: nil

cancelButtonTitle: nil

otherButtonTitles:@"OK", nil];

[alert show];


}


β€” (BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier

sender:(id)sender{

/* ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² тСкстовом ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ тСкст. Π•сли тСкста

Ρ‚Π°ΠΌ Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС

ΠΈ Π½Π΅ позволяСм ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран */

if ([identifier isEqualToString:@"pushSecondViewController"]){


if ([self.textField.text length] == 0){