Часть 2 находится здесь
Привет, ребята, я создатель Todo Rugby, приложения, разработанного для предоставления информации болельщикам и новостей о матчах, матчах, турнирах и командах. Я начал разрабатывать его полтора года назад и запустил 13 июня 2016 года. В тот момент я написал его на Objective-C, потому что это был мой основной язык для разработки приложений для iOS, и кривая обучения Swift меня немного раздражала. для меня. Я был неправ.
Сегодня я начинаю серию публикаций о том, как я пишу с нуля одно и то же приложение на Swift, с какими проблемами я сталкиваюсь, какие решения я принимаю и почему вы все должны подумать о том, чтобы сделать то же самое, или, по крайней мере, начать с ним интеграцию и разработку новых функций. В следующих постах вы сможете увидеть мой прогресс и то, как быстро я его продвигаю.
Одна из основных причин, по которой я не начал раньше, заключалась в том, что с более новыми версиями Swift вам приходилось преобразовывать всю кодовую базу в новый синтаксис, что было слишком утомительно и было головной болью для всех разработчиков. Со Swift 4 код, который вы пишете сегодня, не изменится в будущих версиях (надеюсь). Частично это связано с тем, что Swift получил большую поддержку со стороны сообщества (42 КБ на Github на момент написания этой статьи). Итак, начнем с этого.
С чего мне начать?
Каждый раз, когда разработчик начинает новый проект, из его головы закипает масса идей и кучка кода. Это потому, что мы обычно думаем быстрее, чем пишем код.
Прежде всего, мне нравится начинать кодировать базовую структуру и скелет, который для меня является навигацией. После удаления раскадровки (мне она не нравится) мне нужно закодировать инициализацию окна:
Не забудьте удалить главный интерфейс в настройках цели:
⌘ + R и вуаля. Первый шаг долгого пути сделан.
Какао-стручки
Вторым шагом на этом пути является интеграция, IMO, лучшего менеджера зависимостей для iOS: CocoaPods. Я большой поклонник того, чтобы не изобретать велосипед, и когда дело доходит до кодирования, использование хорошо протестированной, документированной и поддерживаемой библиотеки намного лучше, чем ее программирование самостоятельно. Итак, давайте начнем его установку, запустив на вашей консоли pod init
. Здесь я не рассказываю, как управлять своим Podfile
или как устанавливать зависимости.
Однако стоит упомянуть несколько библиотек:
- Localize-Swift: помощник во всех ваших проблемах с локализацией.
- R.swift: это одна из лучших библиотек, разработанных для экосистемы iOS. Это дает вам возможность получать автозаполненные ресурсы со строгой типизацией, которые существуют с самого начала Android.
- SnapKit: лучшая программная библиотека для просмотра макетов, которая уже существовала на Objective-C, она доступна и для Swift, и это потрясающе!
Менеджер навигации
Третий шаг в этом посте касается синглтона, который должен существовать в каждом приложении, и я люблю называть его NavigationManager
. Как и следовало ожидать, мы должны сделать его синглтоном. Но как сделать синглтон на Swift? Вот как мы писали синглтоны на Objective-C:
Теперь, немного погуглив, я нахожу способ закодировать однострочный (или два) синглтон на Swift:
Итак, теперь единственное, что нам нужно сделать на AppDelegate
, - это вызвать NavigationManager.sharedInstance.start()
. Вот и все.
Ящик и вкладки
Если вы загрузите Todo Rugby из AppStore, вы заметите, что в нем есть два типа шаблонов навигации: ящик и вкладки. Причина, по которой я принял это решение, проста. Мне нужен был способ показать пользователю доступные турниры, а также перемещаться по информации о каждом турнире:
Выдвижной ящик
Итак, чтобы воспроизвести это, я собираюсь установить ту же библиотеку, что и в Objective-C: MMDrawerController.
TabBarController
Второе, что мне нужно, это создать подкласс хорошо известного UITabBarController
. Мне нравится это делать по нескольким причинам:
- Этот класс знает, какая вкладка выбрана, и классы на каждой вкладке.
- Удалите код из классов, в которых нет необходимости (например,
NavigationManager
).
Заверните
Как только у меня появятся эти два класса, давайте создадим ту же навигацию:
Как только мы получим это, приложение должно выглядеть так:
Это конец первой части постов. Я добавлю новые, рассказывающие о моем прогрессе, включая HTTP-запросы и обработку модели.
До следующего!