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

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

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

1.9. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ² ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UIViewController

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

НСобходимо ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΠ΄Π°ΠΌΠΈ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

РСшСниС

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

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

БтратСгия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS, прСдлоТСнная Apple, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° «модСль β€” Π²ΠΈΠ΄ β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Β» (MVC) ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡. Π’ΠΈΠ΄Ρ‹ β€” это элСмСнты, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° модСль β€” это абстракция с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ управляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ β€” это ΠΏΠ΅Ρ€Π΅ΠΌΡ‹Ρ‡ΠΊΠ°, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ модСль ΠΈ Π²ΠΈΠ΄. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π°) управляСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΠ΄ΠΎΠΌ ΠΈ модСлью. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ этими ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π΅ занимаСтся Π²ΠΈΠ΄? ΠžΡ‚Π²Π΅Ρ‚ довольно прост: Ссли Π±Ρ‹ ΠΌΡ‹ Π²ΠΎΠ·Π»Π°Π³Π°Π»ΠΈ эти Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π²ΠΈΠ΄, ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° становился Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ тСсно связывал Π±Ρ‹ Π²ΠΈΠ΄Ρ‹ с модСлью, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² XIB (для использования с конструктором интСрфСйсов) ΠΈΠ»ΠΈ просто ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ программирования. Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ„Π°ΠΉΠ»ΠΎΠΌ XIB.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΎΠ² ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² Xcode. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠΆΠ΅ создали шаблон прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблона Empty Application (ΠŸΡƒΡΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅), Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° для вашСго прилоТСния.

1. Π’ Xcode ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² мСню File (Π€Π°ΠΉΠ») ΠΈ Ρ‚Π°ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ New-New File (Новый— Новый Ρ„Π°ΠΉΠ»).

2. Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ New File (Новый Ρ„Π°ΠΉΠ») ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ слСва Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ катСгория iOS ΠΈ подкатСгория Cocoa Touch. Когда сдСлаСтС это, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ класс UIViewController Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅) (рис. 1.24).


Рис. 1.24. Подкласс Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°


3. ΠΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² тСкстовом ΠΏΠΎΠ»Π΅ Subclass (Подкласс) ΡƒΠΊΠ°Π·Π°Π½ΠΎ UIViewController, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎ сняты Ρ„Π»Π°ΠΆΠΊΠΈ Targeted for iPad (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° для iPad) ΠΈ With XIB for user interface (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» XIB для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса). ИмСнно такая ситуация ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 1.25. НаТмитС Next (Π”Π°Π»Π΅Π΅).


Рис. 1.25. БобствСнный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π±Π΅Π· использования класса XIB


4. ΠΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС (Save as (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ)) Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° RootViewController ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Save (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ) (рис. 1.26).


Рис. 1.26. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Π±Π΅Π· использования Ρ„Π°ΠΉΠ»Π° XIB


5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΉΠ΄Π΅ΠΌ Ρ„Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (.m) Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся AppDelegate.m. Π’ этом Ρ„Π°ΠΉΠ»Π΅ объявим свойство Ρ‚ΠΈΠΏΠ° ViewController:


#import Β«AppDelegate.hΒ»

#import Β«ViewController.hΒ»


@interface AppDelegate ()

@property (nonatomic, strong) ViewController *viewController;

@end


@implementation AppDelegate


…


6. ΠΠ°ΠΉΠ΄Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ application: didFinishLaunchingWithOptions:, относящийся ΠΊ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρƒ прилоТСния, инстанцируСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² нашС ΠΎΠΊΠ½ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°:


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

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


self.viewController = [[ViewController alloc] initWithNibName: nil

bundle: nil];


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];


/* Π”Π΅Π»Π°Π΅ΠΌ наш ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π° */

self.window.rootViewController = self.viewController;


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ снова ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² эмуляторС. На экранС ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π²ΠΈΠ΄, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ€ΠΎΠ²Π½Ρ‹ΠΉ Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚. ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ: Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ доступ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π²ΠΈΠ΄Π°, Π½ΠΎ ΠΈ ΠΊ самому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ этого Π²ΠΈΠ΄Π°.

Если ΠΏΡ€ΠΈ создании ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° (см. рис. 1.25) ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ With XIB for user interface (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» XIB для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса), Ρ‚ΠΎ Xcode Ρ‚Π°ΠΊΠΆΠ΅ сгСнСрируСт Ρ„Π°ΠΉΠ» XIB. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Π°ΠΌ придСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ вашСго Π²ΠΈΠ΄Π° ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π° XIB, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ initWithNibName ΠΌΠ΅Ρ‚ΠΎΠ΄Π° initWithNibName: bundle: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π° XIB:


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

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


self.viewController = [[ViewController alloc]

initWithNibName:@"ViewController"

bundle: nil];


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];


/* Π”Π΅Π»Π°Π΅ΠΌ наш ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π° */

self.window.rootViewController = self.viewController;


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Если Π²Ρ‹ всС ΠΆΠ΅ создали Ρ„Π°ΠΉΠ» XIB, подготавливая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ вашСго Π²ΠΈΠ΄Π°, этот Ρ„Π°ΠΉΠ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² Xcode ΠΈ ΡΠΌΠ°ΡΡ‚Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π² конструкторС интСрфСйсов.

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

Π Π°Π·Π΄Π΅Π» 1.0.

1.10. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ возмоТностСй совмСстного использования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ UIActivityViewController

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

Π’Π½ΡƒΡ‚Ρ€ΠΈ вашСго прилоТСния Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ с ΠΈΡ… Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ. Для этого прСдполагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 1.27. Π’ этом интСрфСйсС ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности совмСстного использования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² iOS, β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Facebook ΠΈ Twitter.

РСшСниС

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ экзСмпляр класса UIActivityViewController ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ совмСстноС использованиС ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² этом классС Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ рассказано Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.

ЭкзСмпляры класса UIActivityViewController Π½Π° iPhone слСдуСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ модально, Π° Π½Π° iPad β€” Π½Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… экранах. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… экранах рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.29.

Рис. 1.27. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π½Π° устройствС с iOS

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

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

БовмСстноС использованиС Π΄Π°Π½Π½Ρ‹Ρ… Π² iOS ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто. Для обСспСчСния Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π°ΠΌ всСго лишь потрСбуСтся ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс UIActivityViewController с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° initWithActivityItems: applicationActivities:. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

β€’ initWithActivityItems β€” массив элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдполагаСтся совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ экзСмпляры NSString, UIImage ΠΈΠ»ΠΈ экзСмпляры Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°ΠΊΠ°Π·Π½Ρ‹Ρ… классов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UIActivityItemSource. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим этот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»;

β€’ applicationActivities β€” массив экзСмпляров UIActivity, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. НапримСр, здСсь Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ совмСстного использования ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ строк. Пока ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ nil Π² качСствС Π΅Π³ΠΎ значСния. Π’Π°ΠΊ ΠΌΡ‹ сообщаСм iOS, Ρ‡Ρ‚ΠΎ собираСмся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмными возмоТностями совмСстного использования.

Π˜Ρ‚Π°ΠΊ, допустим, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ совмСстно. Рядом с этим ΠΏΠΎΠ»Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Share (ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ). Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Share, Π²Ρ‹ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ тСкст, находящийся Π² тСкстовом ΠΏΠΎΠ»Π΅, Π²Π°ΡˆΠ΅ΠΌΡƒ экзСмпляру класса UIActivityViewController. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. ΠœΡ‹ пишСм этот ΠΊΠΎΠ΄ для iPhone, поэтому прСдставим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° с этой Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² нашСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π° тСкстовоС ΠΏΠΎΠ»Π΅, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΅Π³ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… сообщСний, Π² особСнности Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° textFieldShouldReturn: ΠΈΠ· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° UITextFieldDelegate. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ собираСмся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² качСствС Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° тСкстового поля. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΠΌ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Share (ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ) ΠΌΠ΅Ρ‚ΠΎΠ΄ дСйствия. Когда эта ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π°, Π½Π°ΠΌ потрСбуСтся ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² тСкстовом ΠΏΠΎΠ»Π΅ Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ информация, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ. Если Π΅Π΅ Ρ‚Π°ΠΌ Π½Π΅ окаТСтся, ΠΌΡ‹ просто ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠΊΠ½ΠΎ с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сообщим, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ содСрТимоС тСкстового поля для совмСстного использования. Если Π² тСкстовом ΠΏΠΎΠ»Π΅ окаТСтся ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ тСкст, ΠΌΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° экран экзСмпляр класса UIActivityViewController.