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

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

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

@property (nonatomic, strong) UINavigationController *navigationController;

@end


@implementation AppDelegate

…


Π’Π΅ΠΏΠ΅Ρ€ΡŒ слСдуСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, воспользовавшись Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ initWithRootViewController:, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ нашСго Π²ΠΈΠ΄Π° ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Π² нашСм ΠΎΠΊΠ½Π΅. Π—Π΄Π΅ΡΡŒ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π΅ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ. UINavigationController β€” это фактичСски подкласс UIViewController, Π° свойство rootViewController, относящССся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΊΠ½Ρƒ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UIViewController. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ нашСго Π²ΠΈΠ΄Π°, ΠΌΡ‹ просто Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°:


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

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


FirstViewController *viewController = [[FirstViewController alloc]

initWithNibName: nil

bundle: nil];


self.navigationController = [[UINavigationController alloc]

initWithRootViewController: viewController];


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];


self.window.rootViewController = self.navigationController;


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


ПослС этого запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² эмуляторС (рис. 1.33).


Рис. 1.33. ΠŸΡƒΡΡ‚ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°

Π€Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° создаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 1.33). Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ этот Ρ„Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

На рис. 1.33 ΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ полосу Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части экрана. Π’Π΅ΠΏΠ΅Ρ€ΡŒ экран ΡƒΠΆΠ΅ Π½Π΅ чисто-Π±Π΅Π»Ρ‹ΠΉ. Π§Ρ‚ΠΎ это Π·Π° Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚? Π­Ρ‚ΠΎ навигационная панСль. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Сю ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ размСстим Π½Π° Π½Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ сдСлаСм ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π° этой ΠΏΠ°Π½Π΅Π»ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° сам для сСбя ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ окаТСтся Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² стСкС.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° нашСго Π²ΠΈΠ΄Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ viewDidLoad. Π’ качСствС свойства ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΡƒΠΊΠ°ΠΆΠ΅ΠΌ First Controller. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ создадим ΠΊΠ½ΠΎΠΏΠΊΡƒ. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΠ΅Ρ‚ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Π½Π° экранС Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°:


#import Β«FirstViewController.hΒ»

#import Β«SecondViewController.hΒ»


@interface FirstViewController ()

@property (nonatomic, strong) UIButton *displaySecondViewController;

@end


@implementation FirstViewController


β€” (void) performDisplaySecondViewController:(id)paramSender{

SecondViewController *secondController = [[SecondViewController alloc]

initWithNibName: nil

bundle: NULL];

[self.navigationController pushViewController: secondController

animated: YES];

}


β€” (void)viewDidLoad{

[super viewDidLoad];

self.title = @"First Controller";


self.displaySecondViewController = [UIButton

buttonWithType: UIButtonTypeSystem];


[self.displaySecondViewController

setTitle:@"Display Second View Controller"

forState: UIControlStateNormal];


[self.displaySecondViewController sizeToFit];

self.displaySecondViewController.center = self.view.center;

[self.displaySecondViewController

addTarget: self

action:@selector(performDisplaySecondViewController:)

forControlEvents: UIControlEventTouchUpInside];


[self.view addSubview: self.displaySecondViewController];

}


@end


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, ΡƒΠΆΠ΅ Π±Π΅Π· Ρ„Π°ΠΉΠ»Π° XIB, ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ SecondViewController. ΠŸΡ€ΠΎΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ процСсс, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.9. Когда создадитС этот ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ Second Controller:


#import Β«SecondViewController.hΒ»


@implementation SecondViewController


β€” (void)viewDidLoad{

[super viewDidLoad];

self.title = @"Second Controller";

}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ собираСмся Π²ΡΠΏΠ»Ρ‹Ρ‚ΡŒ ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· 5 сСкунд послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° окаТСтся Π½Π° экранС. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ performSelector: withObject: afterDelay: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° NSObject, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ goBack. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· 5 сСкунд послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π½Π° экранС этот ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΈΠ΄. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ goBack просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ свойство navigationController ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° (Π° ΠΎΠ½ΠΎ встроСно Π² UIViewController, ΠΈ Π½Π°ΠΌ самим Π½Π΅ приходится Π΅Π³ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ экзСмпляру FirstViewController. Для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ popViewControllerAnimated: Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ YES, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π²ΠΈΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ссли NO β€” Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, ΠΊΠ°ΠΊ Π½Π° рис. 1.34.


Рис. 1.34. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° размСщаСтся ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°


#import Β«SecondViewController.hΒ»


@implementation SecondViewController


β€” (void)viewDidLoad{

[super viewDidLoad];

self.title = @"Second Controller";

}


β€” (void) goBack{

[self.navigationController popViewControllerAnimated: YES];

}


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

[super viewDidAppear: paramAnimated];

[self performSelector:@selector(goBack)

withObject: nil

afterDelay:5.0f];


}


@end


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

Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² эмуляторС ΠΈ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π΅Ρ‚Π΅ 5 сСкунд послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ отобразится ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ истСчСнии этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° экранС автоматичСски появится ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ 5 сСкунд β€” ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° автоматичСски ΡƒΠΉΠ΄Π΅Ρ‚ с экрана, освободив мСсто ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ.

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

Π Π°Π·Π΄Π΅Π» 1.9.

1.13. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ массивом ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΎΠ², относящихся ΠΊ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ

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

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

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ свойством viewControllers ΠΈΠ· класса UINavigationController для доступа ΠΊ массиву ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΎΠ², связанных с Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для измСнСния этого массива:


β€” (void) goBack{

/* ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ массив ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΎΠ². */

NSArray *currentControllers = self.navigationController.viewControllers;


/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ этого массива измСняСмый массив. */

NSMutableArray *newControllers = [NSMutableArray

arrayWithArray: currentControllers];


/* Π£Π΄Π°Π»ΡΠ΅ΠΌ послСдний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°. */

[newControllers removeLastObject];


/* ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ этот массив Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ. */

self.navigationController.viewControllers = newControllers

}


Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ любого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ послСдний ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° ΠΈΠ· ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, связанного с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отобраТаСтся Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚.

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

ЭкзСмпляр класса UINavigationController содСрТит массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² UIViewController. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² этот массив, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ мСста Π² массивС.

Если ΠΌΡ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ управляСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΎΠ², связанными с Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ присвоСния массива свойству viewControllers Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Ρ‚ΠΎ вСсь процСсс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ Π±Π΅Π· явного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ ΠΈ Π±Π΅Π· Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти дСйствия Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ setViewControllers: animated:, относящийся ΠΊ классу UINavigationController, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°:


β€” (void) goBack{

/* ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ массив ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΎΠ². */

NSArray *currentControllers = self.navigationController.viewControllers;


/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ этого массива измСняСмый массив. */

NSMutableArray *newControllers = [NSMutableArray