В качестве курсового проекта вы разработаете приложение «Трекер полезных привычек». Вы примените полученные знания:
-
адаптивная вёрстка экранов;
-
различные навигационные паттерны в iOS;
-
использование и настройка визуальных компонентов;
-
использование UITableView, UICollectionView и кастомных ячеек.
- Проект должен запускаться без ошибок.
- Для вёрстки используется Auto Layout.
- Вёрстка приложения реализована либо в коде, либо в Interface Builder.
- Вёрстка приложения адаптивная, интерфейс выглядит хорошо на различных устройствах, в том числе на iPad.
- Код проекта написан в одном стиле. Обратите внимание на названия классов, переменных и функций.
Для того, чтобы создавать, сохранять и получать добавленные привычки, нужно использовать файл HabitsStore.swift. Он содержит два класса:
-
класс Habit позволяет сохранять и обновлять данные для одной привычки: название, цвет, время выполнения и т.д.;
-
класс HabitsStore позволяет сохранять и получать сохранённые привычки. Для использования HabitsStore в разных модулях приложения нужно использовать HabitsStore.shared свойство, например:
let store = HabitsStore.shared print(store.habits) // распечатает список добавленных привычек
Привычки, добавленные в HabitsStore, сохраняются между перезапусками приложения автоматически.
Классы Habit и HabitsStore содержат все данные, необходимые для отображения в приложении. Внимательно изучите интерфейсы этих классов и документацию перед работой над проектом.
Макеты всех экранов находятся в Figma. Все стили текста и цвета приложения располагаются на отдельном слое UI Kit. В реализации навигации приложения вам поможет интерактивный прототип.
С помощью приложения «Трекер полезных привычек» пользователи смогут добавлять полезные привычки и следить за прогрессом их выполнения.
- Создайте iOS-проект и назовите его MyHabits, добавьте поддержку iPad.
- Добавьте иконку приложения и обновите LaunchScreen согласно макетам.
- Добавьте класс HabitsStore.swift.
- Проверьте, что проект собирается без ошибок.
- Добавьте таб бар с двумя контроллерами:
-
HabitsViewController для отображения привычек,
-
InfoViewController для отображения информации о привычках.
Вёрстку самих экранов нужно будет сделать в следующих шагах.
- На экране HabitsViewController добавьте кнопку «Добавить» согласно макетам.
-
На экран InfoViewController добавить информацию о привычках согласно макетам. Если текст не влезает на экран, он должен скроллиться.
-
Весь контент на экране должен скроллиться.
-
Добавьте экран HabitViewController с вёрсткой согласно макетам.
-
При нажатии на кнопку «Добавить» на экране HabitsViewController должен модально открываться HabitViewController.
Не создавайте UINavigationBar программно. Используйте UINavigationController для отображения навигейшн бара.
-
При нажатии на цветной круг должен открываться UIColorPickerViewController. Когда пользователь выбирает цвет, кружок должен отображать новый выбранный цвет. При следующем показе UIColorPickerController в нём должен быть выбран текущий цвет.
-
При нажатии на кнопку «Создать» нужно создать новый экземпляр класса Habit и сохранить его в HabitsStore, например:
let newHabit = Habit(name: "Выпить стакан воды перед завтраком",
date: Date(),
color: .systemRed)
let store = HabitsStore.shared
store.habits.append(newHabit)
Для сохранения данных о привычке нужно использовать свойства, которые пользователь задал с помощью элементов интерфейса: UITextField, UIView с заданным backgroundColor, UIDatePicker.
- После сохранения новой привычки экран HabitViewController должен закрываться.
- На экран HabitsViewController добавьте UICollectionView, которая должна показывать:
-
ячейку ProgressCollectionViewCell, которая показывает прогресс за сегодняшний день. Данные для отображения можно получить из свойства HabitsStore.shared.todayProgress;
-
ячейки HabitCollectionViewCell для показа добавленных привычек. Данные о привычках можно получить из свойства HabitsStore.shared.habits.
- Цветной круг в ячейке привычки показывает, была ли она сегодня затрекана. При нажатии на круг должно измениться его состояние — заливка цветом и иконка галочки. Также нужно сохранить время привычки с помощью функции HabitsStore.shared.track(). Каждый день можно добавить только одно время для одной привычки. Проверить это условие можно с помощью свойства isAlreadyTakenToday.
- Прогресс в ProgressCollectionViewCell должен всегда показывать актуальное состояние и обновляться при добавлении времени любой привычки.
- После добавления новой привычки и закрытия HabitViewController новая привычка должна появляться в списке.
- Добавьте HabitDetailsViewController с вёрсткой согласно макетам. Список нужно сделать с помощью UITableView. Данные для списка можно получить из свойства HabitsStore.shared.dates. Для того, чтобы показать, была ли привычка затрекана в дату из списка, нужно использовать функцию HabitsStore.shared.habit(_:isTrackedIn:).
-
При нажатии на кнопку «Править» на экране HabitDetailsViewController должен показываться экран HabitViewController с заполненной информацией о выбранной привычке.
-
Пользователь может менять данные, при нажатии на кнопку «Сохранить» экран также должен закрываться, но в
HabitsStore
не должно появляться новой привычки, нужно обновить данные выбранной привычки. При изменении названия привычки на экране HabitDetailsViewController должно показываться актуальное название. -
При нажатии на кнопку «Отменить» экран HabitViewController должен закрываться. Изменённые данные привычки не должны быть сохранены, даже если пользователь изменял данные на экране.
-
Внизу экрана HabitViewController должна отображаться кнопка «Удалить привычку». Кнопка должна отображаться, только если мы редактируем ранее добавленную привычку.
-
При нажатии на кнопку нужно показать UIAlertController со следующими параметрами:
- заголовок «Удалить привычку»;
- сообщение «Вы хотите удалить привычку "название выбранной привычки"?»;
- два Alert Actions:
- «Отмена», который закрывает UIAlertController;
- «Удалить», при нажатии на который привычка удаляется из
HabitsStore
, экраны HabitViewController и HabitDetailsViewController закрываются и привычка пропадает из списка на экране MyHabitsViewController.
Чтобы отправить работу на проверку, загрузите репозиторий на Github.
Что поможет решить большинство частых проблем
- Перед началом работы над проектом необходимо договориться с дипломным руководителем о том, как вы будете сдавать работу на проверку: частями или полностью, файлом или через PR, а также обсудить все вопросы, чтобы не было недопонимания в будущем.
- При возникновении вопросов попробовать найти ответ сначала самому в интернете. Умение искать ответы пригодится вам в профессиональной деятельности. После самостоятельного поиска можно спрашивать руководителя.
- Если вопросов больше одного, то присылайте их в виде нумерованного списка. Так дипломному руководителю будет проще отвечать на каждый из них.
- При необходимости прикрепите к вопросу скриншоты и стрелочкой покажите, где не получается. Программу для этого можно скачать здесь.
- Распределяйте нагрузку, планируйте время на обучение и начинайте работу над дипломом как можно раньше, чтобы у вас было больше времени на правки и доработку проекта.
Что может стать источником проблем
- Вопросы вида «Ничего не работает, не запускается, всё сломалось». Руководитель не сможет ответить на такой вопрос без дополнительных уточнений. Цените своё время и время других.
- Откладывание диплома на последний момент.
- Ожидание моментального ответа на свой вопрос. Руководители — действующие разработчики, которые кроме преподавания занимаются рабочими проектами. Их время ограничено, поэтому постарайтесь задавать правильные вопросы, чтобы получать быстрые ответы.