» » » Вандад Нахавандипур - iOS. Приемы программирования


Авторские права

Вандад Нахавандипур - iOS. Приемы программирования

Здесь можно купить и скачать "Вандад Нахавандипур - iOS. Приемы программирования" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Питер, год 2014. Так же Вы можете читать ознакомительный отрывок из книги на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Вандад Нахавандипур - iOS. Приемы программирования
Рейтинг:
Название:
iOS. Приемы программирования
Издательство:
неизвестно
Год:
2014
ISBN:
978-5-496-01016-0
Вы автор?
Книга распространяется на условиях партнёрской программы.
Все авторские права соблюдены. Напишите нам, если Вы не согласны.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "iOS. Приемы программирования"

Описание и краткое содержание "iOS. Приемы программирования" читать бесплатно онлайн.



Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.

Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.






@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


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "iOS. Приемы программирования"

Книги похожие на "iOS. Приемы программирования" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Вандад Нахавандипур

Вандад Нахавандипур - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Вандад Нахавандипур - iOS. Приемы программирования"

Отзывы читателей о книге "iOS. Приемы программирования", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.