Pull to refresh

Жизненный цикл UIViewController'a

Development for iOS *
Большинство прикладных приложения под iOS таким или иным образом используют UIViewController'ы. Там где UIKit фрэймворк — там и UIViewController'ы. Их много, они повсюду, они сидят в засадах и выглядывают из-за каждого угла. Поэтому, любой программист под iOS — будь он зеленым новичком, едва ступившим на тропу программирования, либо матерым профессионалом своего дела, должны знать о UIViewController'aх все.

Причиной написания данной поста является то, что, как оказалось, можно преспокойно программировать под iOS полгода, и не знать полностью о жизненном цикле UIViewcontroller'ов. И на небольших проектах это даже получается. Однако, когда приходится иметь дело с серьезным, достаточно большим проектом, то появляются определенные проблемы с нехваткой памяти, «неправильной» и «непонятной» работой контроллеров, пропажей данных, и еще со многими типичными проблемами, о которых будет написано ниже.

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

Всех заинтересовавшихся, прошу
под кат
Total votes 70: ↑64 and ↓6 +58
Views 143K
Comments 43

UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое

Development for iOS *Development of mobile applications *Objective C *
Sandbox
Я не претендую на истину в последней инстанции, но и в разработке кое-чего все-таки смыслю. Посему решил поделиться с вами некоторыми результатами проделанной работы, поделиться некой компиляцией знания о навигационных контроллерах, так сказать. Может это и поможет какой-либо из бренных оболочек, способных именоваться далее моими читателями, создать более совершенный программный продукт.

Предметом исследования будет навигационный контроллер, а именно класс UINavigationController из стандартного фреймворка UIKit для работы с интерфейсом, который нам любезно предоставляет Apple.

Вкратце о...


«Контроллер» в данном случае — некий класс, инкапсулирующий логику, согласно концепции (еще называемой паттерном) MVC.





Навигационный контроллер (UINavigationController) — класс высокого уровня абстракции, содержит в себе иерархию других контроллеров представлений, между представлениями(вьюшками/UIView) которых способен осуществлять навигацию (в чем его, собственно, основная задача и состоит!), передавая в нужный момент управление соответствующему контроллеру. Кроме этого — композиционно содержит в себе навигационную панель (UINavigationBar), которую отображает на экране, и соответствующим образом меняет содержимое данной панели: в зависимости от активного контроллера.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 29K
Comments 13

Композиция UIViewController-ов и навигация между ними (и не только)

Development for iOS *Development of mobile applications *
Sandbox


В этой статье я хочу поделиться опытом который мы успешно используем уже несколько лет в наших iOS приложениях, 3 из которых в данный момент находятся в Appstore. Данный подход хорошо зарекомендовал себя и недавно мы сегрегировали его от остального кода и оформили в отдельную библиотеку RouteComposer о которой собственно и пойдет речь.

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 18K
Comments 10

Примеры конфигурации UIViewController-ов используя RouteComposer

Development for iOS *Development of mobile applications *Swift *

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


Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 3.7K
Comments 2

Контроллер, полегче! Выносим код в UIView

Dodo Engineering corporate blog Development for iOS *Development of mobile applications *
Sandbox
У вас большой UIViewController? У многих да. С одной стороны, в нём работа с данными, с другой — с интерфейсом.

Задачи отделения логики от интерфейса описаны в сотнях статей про архитектуру: MVP, MVVM, VIPER. Они решают проблему потока данных, но не отвечают на вопрос как работать с интерфейсом: в одном месте остается создание элементов, лейаут, настройка, обработка ввода и анимации.

Давайте отделим view от controller и посмотрим чем нам поможет loadView().


Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 25K
Comments 12

Контроллер-луковка. Разбиваем экраны на части

Dodo Engineering corporate blog Development for iOS *Development of mobile applications *

В дизайне популярен atomic design и дизайн системы: это когда всё состоит из компонентов, от контролов до экранов. Программисту писать отдельные контролы несложно, но что делать с целыми экранами?


Разберём на новогоднем примере:


  • налепим всё в кучу;
  • разделим на контроллеры: выделим навигацию, шаблон и контент;
  • повторно используем код для других экранов.

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 8.2K
Comments 2

Проблемы паттерна Координатор и при чем тут RouteComposer

Development for iOS *Development of mobile applications *Xcode *Swift *

Я продолжаю цикл статей о библиотеке RouteComposer которую мы используем, и сегодня я хочу поговорить о паттерне Координатор. К написанию этой статьи меня побудило обсуждение одной из статей о паттерне Координатор тут на Хабре.


Паттерн Координатор, будучи представленным не так давно, набирает все большую популярность в кругах IOS разработчиков, и, в целом, понятно почему. Потому что средства из коробки, которые предоставляет UIKit представляют собой довольно не универсальное месиво.


image

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 8K
Comments 12

Создание программно интерфейса. А так же передача объекта между контроллерами

Swift *
Tutorial

В предыдуще статье мы рассмотрели создание TabBarController и NavigationController программно в UIKit. В данной статье мы продолжим выполнение заданий и рассмотрим пункты 6 и 7. А Bar Button Item и Alert мы оставим на десерт и рассмотрим в следующей статье.

Читать далее
Total votes 1: ↑0 and ↓1 -1
Views 1.6K
Comments 2