В качестве курсового проекта вы разработаете приложение "Трекер полезных привычек". Вы примените полученные знания:
-
Адаптивная верстка экранов;
-
Различные навигационные паттерны в 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.
Что поможет решить большинство частых проблем:
- Попробовать найти ответ сначала самому в интернете. Скилл поиска ответов пригодится вам в профессиональной деятельности. И только после этого спрашивать руководителя.
- Если вопросов больше одного, то присылайте их в виде нумерованного списка. Так дипломному руководителю будет проще отвечать на каждый из них.
- При необходимости прикрепите к вопросу скриншоты и стрелочкой покажите, где не получается. Программу для этого можно скачать здесь.
- Начинать работу над дипломом как можно раньше, чтобы было больше времени на правки.
- Делайте диплом частями, а не всё сразу. Если сделать всё сразу, то количество комментариев от дипломного руководителя может вас деморализовать.
Что может стать источником проблем:
- Вопросы вида "Ничего не работает/не запускается/всё сломалось". Руководитель не сможет ответить на такой вопрос без дополнительных уточнений. Цените своё время и время других.
- Откладывание диплом на последний момент.
- Ожидание моментального ответа на свой вопрос. Руководители — работающие разработчики, которые кроме преподавания занимаются рабочими проектами. Их время ограничено, поэтому постарайтесь задавать правильные вопросы, чтобы получать быстрые ответы.