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

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

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

β€” (void) alertView:(UIAlertView *)alertView

didDismissWithButtonIndex:(NSInteger)buttonIndex{

[self activityDidFinish: YES];

}


3. Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ activityType нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° прСдставляСт собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° NSString, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€” ΠΎΠ½ΠΎ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы iOS для отслСТивания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… особых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΎΡ‚ Apple, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строками Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Β«ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° прилоТСния ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ имя нашСго класса. Π˜Ρ‚Π°ΠΊ, Ссли имССтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° com.pixolity.ios.cookbook.myapp ΠΈ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ StringReverserActivity, Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠΌ ΠΎΡ‚ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° строку com.pixolity.ios.cookbook.myapp.StringReverserActivity, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


β€” (NSString *) activityType{

return [[NSBundle mainBundle].bundleIdentifier

stringByAppendingFormat:@".%@", NSStringFromClass([self class])];

}


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


β€” (NSString *) activityTitle{

return @"Reverse String";

}


5. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ activityImage, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π°ΠΌ экзСмпляр UIImage β€” Ρ‚ΠΎ самоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π° с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ прСдоставляйтС ΠΏΠΎ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° изобраТСния β€” для сСтчаточного дисплСя ΠΈ для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ β€” ΠΊΠ°ΠΊ для iPad, Ρ‚Π°ΠΊ ΠΈ для iPhone/iPod. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сСтчаточного изобраТСния для iPad Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 110 Γ— 110 пиксСлов, Π° для iPhone β€” 86 Γ— 86 пиксСлов. ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² эти значСния Π½Π° 2, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ этом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ iOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π», поэтому ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΠ½ вашСго изобраТСния являСтся ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΈ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π― ΡƒΠΆΠ΅ создал ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ с рСсурсами ΠΌΠΎΠ΅Π³ΠΎ прилоТСния ΠΈ Π½Π°Π·Π²Π°Π» Π΅Π³ΠΎ Reverse (ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π½ΠΈΠΌ Π½Π° рис. 1.29. А Π²ΠΎΡ‚ ΠΈ ΠΊΠΎΠ΄:


β€” (UIImage *) activityImage{

return [UIImage imageNamed:@"Reverse"];

}


Рис. 1.29. Π’ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ РСсурсы содСрТатся изобраТСния для создаваСмой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


6. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ canPerformWithActivityItems: нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° содСрТит массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ массив ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся логичСским ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ произвСсти Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ элСмСнтом массива. НапримСр, наша функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ любоС количСство Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΠΉ строк. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΌΡ‹ Π½Π°ΠΉΠ΄Π΅ΠΌ Π² массивС ΠΎΠ΄Π½Ρƒ строку, это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌ Π½Π° Ρ€ΡƒΠΊΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ впослСдствии смоТСм ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ эту строку. Но Ссли ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ массив ΠΈΠ· 1000 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΌΡƒ для нас Ρ‚ΠΈΠΏΡƒ, ΠΌΡ‹ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ запрос, Π²Π΅Ρ€Π½ΡƒΠ² NO ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:


β€” (BOOL) canPerformWithActivityItems:(NSArray *)activityItems{


for (id object in activityItems){

if ([object isKindOfClass: [NSString class]]){

return YES;

}

}


return NO;

}


7. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ prepareWithActivityItems: нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ относится ΠΊ Ρ‚ΠΈΠΏΡƒ NSArray. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся, Ссли Π²Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ YES ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° canPerformWithActivityItems:. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ массив для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования. Но Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π΅ вСсь массив, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” Ρ‚Π΅, Ρ‡Ρ‚ΠΎ относятся ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΌΡƒ вас Ρ‚ΠΈΠΏΡƒ. НапримСр, строки:


β€” (void) prepareWithActivityItems:(NSArray *)activityItems{


NSMutableArray *stringObjects = [[NSMutableArray alloc] init];

for (id object in activityItems){

if ([object isKindOfClass: [NSString class]]){

[stringObjects addObject: object];

}

}


self.activityItems = [stringObjects copy];

}


8. ΠŸΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎΠ΅: потрСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ performActivity нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся, Ссли iOS Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ нас произвСсти Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ дСйствия Π½Π°Π΄ списком Ρ€Π°Π½Π΅Π΅ прСдоставлСнных ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ собираСмся ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· массива с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡ… всС ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΎΠΊΠ½Π΅ с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ:


β€” (NSString *) reverseOfString:(NSString *)paramString{


NSMutableString *reversed = [[NSMutableString alloc]

initWithCapacity: paramString.length];


for (NSInteger counter = paramString.length β€” 1;

counter >= 0;

counterβ€”){

[reversed appendFormat:@"%c", [paramString characterAtIndex: counter]];

}


return [reversed copy];


}


β€” (void) performActivity{


NSMutableString *reversedStrings = [[NSMutableString alloc] init];


for (NSString *string in self.activityItems){

[reversedStrings appendString: [self reverseOfString: string]];

[reversedStrings appendString:@"\n"];

}


UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Reversed"

message: reversedStrings

delegate: self

cancelButtonTitle:@"OK"

otherButtonTitles: nil];


[alertView show];

}


Π˜Ρ‚Π°ΠΊ, рСализация класса нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² спискС с нашСй ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ:


#import Β«ViewController.hΒ»

#import Β«StringReverserActivity.hΒ»


@implementation ViewController


β€” (void) viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];


NSArray *itemsToShare = @[

@"Item 1",

@"Item 2",

@"Item 3",

];


UIActivityViewController *activity =

[[UIActivityViewController alloc]

initWithActivityItems: itemsToShare

applicationActivities:@[[StringReverserActivity new]]];


[self presentViewController: activity animated: YES completion: nil];

}

@end


ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС прилоТСния Π½Π° экранС появится ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ такая, ΠΊΠ°ΠΊ Π½Π° рис. 1.30.


Рис. 1.30. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция для обращСния строк Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находится Π² спискС доступных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ


Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ Π² этом спискС элСмСнт Reverse String (ΠžΠ±Ρ€Π°Ρ‰Π΅Π½Π½Π°Ρ строка), Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° рис. 1.31.


Рис. 1.31. Наша функция для обращСния строк Π² дСйствии

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

Π Π°Π·Π΄Π΅Π» 1.10.

1.12. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UINavigationController

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

НСобходимо Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, сопровоТдая этот процСсс ΠΏΠ»Π°Π²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

РСшСниС

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ экзСмпляр класса UINavigationController.

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

Если Π²Π°ΠΌ доводилось Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с iPhone, iPod touch ΠΈΠ»ΠΈ iPad, Ρ‚ΠΎ Π²Ρ‹, скорСС всСго, ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² дСйствии Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ инструмСнт управлСния. НапримСр, Ссли ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Settings (Настройки) Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Wallpaper (Обои) (рис. 1.32). Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ основной экран ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Settings (Настройки) отодвигаСтся Π²Π»Π΅Π²ΠΎ, Π° Π½Π° Π΅Π³ΠΎ мСсто справа Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ экран Wallpaper (Обои). Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ самая интСрСсная Ρ‡Π΅Ρ€Ρ‚Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ iPhone. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΎΠ² Π² стСк ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· стСка. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ находящийся Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ стСка, Π²ΠΈΠ΄Π΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π˜Ρ‚Π°ΠΊ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самый Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° показываСтся Π·Ρ€ΠΈΡ‚Π΅Π»ΡŽ, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² стСкС Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°.


Рис. 1.32. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° настроСк, ΠΎΡ‚ΠΎΠ΄Π²ΠΈΠ³Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ с обоями для экрана


Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Но сначала Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ шаги, описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.9, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с простым ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π°. Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.9. НачнСм с Ρ„Π°ΠΉΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (.m) Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° нашСго прилоТСния:


#import Β«AppDelegate.hΒ»

#import Β«FirstViewController.hΒ»


@interface AppDelegate ()

@property (nonatomic, strong) UINavigationController *navigationController;