Skip to content

Krostal/MyHabits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 

Repository files navigation

Курсовой проект «Интерфейс приложения»

В качестве курсового проекта вы разработаете приложение «Трекер полезных привычек». Вы примените полученные знания:

  • адаптивная вёрстка экранов;

  • различные навигационные паттерны в 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. В реализации навигации приложения вам поможет интерактивный прототип.

Реализация проекта

С помощью приложения «Трекер полезных привычек» пользователи смогут добавлять полезные привычки и следить за прогрессом их выполнения.

Создание проекта

  1. Создайте iOS-проект и назовите его MyHabits, добавьте поддержку iPad.
  2. Добавьте иконку приложения и обновите LaunchScreen согласно макетам.
  3. Добавьте класс HabitsStore.swift.
  4. Проверьте, что проект собирается без ошибок.

Добавление базовой навигации

  1. Добавьте таб бар с двумя контроллерами:
  • HabitsViewController для отображения привычек,

  • InfoViewController для отображения информации о привычках.

Вёрстку самих экранов нужно будет сделать в следующих шагах.

  1. На экране HabitsViewController добавьте кнопку «Добавить» согласно макетам.

Добавление экрана с информацией

  1. На экран InfoViewController добавить информацию о привычках согласно макетам. Если текст не влезает на экран, он должен скроллиться.

  2. Весь контент на экране должен скроллиться.

Добавление новой привычки

  1. Добавьте экран HabitViewController с вёрсткой согласно макетам.

  2. При нажатии на кнопку «Добавить» на экране HabitsViewController должен модально открываться HabitViewController.

    Не создавайте UINavigationBar программно. Используйте UINavigationController для отображения навигейшн бара.

  3. При нажатии на цветной круг должен открываться UIColorPickerViewController. Когда пользователь выбирает цвет, кружок должен отображать новый выбранный цвет. При следующем показе UIColorPickerController в нём должен быть выбран текущий цвет.

  4. При нажатии на кнопку «Создать» нужно создать новый экземпляр класса Habit и сохранить его в HabitsStore, например:

let newHabit = Habit(name: "Выпить стакан воды перед завтраком",
                     date: Date(),
                     color: .systemRed)
let store = HabitsStore.shared
store.habits.append(newHabit)

Для сохранения данных о привычке нужно использовать свойства, которые пользователь задал с помощью элементов интерфейса: UITextField, UIView с заданным backgroundColor, UIDatePicker.

  1. После сохранения новой привычки экран HabitViewController должен закрываться.

Список добавленных привычек

  1. На экран HabitsViewController добавьте UICollectionView, которая должна показывать:
  • ячейку ProgressCollectionViewCell, которая показывает прогресс за сегодняшний день. Данные для отображения можно получить из свойства HabitsStore.shared.todayProgress;

  • ячейки HabitCollectionViewCell для показа добавленных привычек. Данные о привычках можно получить из свойства HabitsStore.shared.habits.

  1. Цветной круг в ячейке привычки показывает, была ли она сегодня затрекана. При нажатии на круг должно измениться его состояние — заливка цветом и иконка галочки. Также нужно сохранить время привычки с помощью функции HabitsStore.shared.track(). Каждый день можно добавить только одно время для одной привычки. Проверить это условие можно с помощью свойства isAlreadyTakenToday.
  2. Прогресс в ProgressCollectionViewCell должен всегда показывать актуальное состояние и обновляться при добавлении времени любой привычки.
  3. После добавления новой привычки и закрытия HabitViewController новая привычка должна появляться в списке.

Показ данных о выбранной привычке

  1. Добавьте HabitDetailsViewController с вёрсткой согласно макетам. Список нужно сделать с помощью UITableView. Данные для списка можно получить из свойства HabitsStore.shared.dates. Для того, чтобы показать, была ли привычка затрекана в дату из списка, нужно использовать функцию HabitsStore.shared.habit(_:isTrackedIn:).

Редактирование и удаление добавленной привычки

  1. При нажатии на кнопку «Править» на экране HabitDetailsViewController должен показываться экран HabitViewController с заполненной информацией о выбранной привычке.

  2. Пользователь может менять данные, при нажатии на кнопку «Сохранить» экран также должен закрываться, но в HabitsStore не должно появляться новой привычки, нужно обновить данные выбранной привычки. При изменении названия привычки на экране HabitDetailsViewController должно показываться актуальное название.

  3. При нажатии на кнопку «Отменить» экран HabitViewController должен закрываться. Изменённые данные привычки не должны быть сохранены, даже если пользователь изменял данные на экране.

  4. Внизу экрана HabitViewController должна отображаться кнопка «Удалить привычку». Кнопка должна отображаться, только если мы редактируем ранее добавленную привычку.

  5. При нажатии на кнопку нужно показать UIAlertController со следующими параметрами:

  • заголовок «Удалить привычку»;
  • сообщение «Вы хотите удалить привычку "название выбранной привычки"?»;
  • два Alert Actions:
    • «Отмена», который закрывает UIAlertController;
    • «Удалить», при нажатии на который привычка удаляется из HabitsStore, экраны HabitViewController и HabitDetailsViewController закрываются и привычка пропадает из списка на экране MyHabitsViewController.

Отправка работы на проверку

Чтобы отправить работу на проверку, загрузите репозиторий на Github.

Как правильно задавать вопросы дипломному руководителю

Что поможет решить большинство частых проблем

  1. Перед началом работы над проектом необходимо договориться с дипломным руководителем о том, как вы будете сдавать работу на проверку: частями или полностью, файлом или через PR, а также обсудить все вопросы, чтобы не было недопонимания в будущем.
  2. При возникновении вопросов попробовать найти ответ сначала самому в интернете. Умение искать ответы пригодится вам в профессиональной деятельности. После самостоятельного поиска можно спрашивать руководителя.
  3. Если вопросов больше одного, то присылайте их в виде нумерованного списка. Так дипломному руководителю будет проще отвечать на каждый из них.
  4. При необходимости прикрепите к вопросу скриншоты и стрелочкой покажите, где не получается. Программу для этого можно скачать здесь.
  5. Распределяйте нагрузку, планируйте время на обучение и начинайте работу над дипломом как можно раньше, чтобы у вас было больше времени на правки и доработку проекта.

Что может стать источником проблем

  1. Вопросы вида «Ничего не работает, не запускается, всё сломалось». Руководитель не сможет ответить на такой вопрос без дополнительных уточнений. Цените своё время и время других.
  2. Откладывание диплома на последний момент.
  3. Ожидание моментального ответа на свой вопрос. Руководители — действующие разработчики, которые кроме преподавания занимаются рабочими проектами. Их время ограничено, поэтому постарайтесь задавать правильные вопросы, чтобы получать быстрые ответы.

About

Course project "Good Habits Tracker"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages