iOS Mini-App Project

Getting Started: Partner Registration and Github

We have pre-populated GitHub with the partners from the Android project. If your partnership changes, please let us know so we can change.

You should be able to go to the GitHub link and create your repo and the partners are ready to go. - https://classroom.github.com/group-assignment-invitations/d3d18143b644a2f30af698ab349c64e1

Please use your apple device team name as the name of your team! Let us know if you have any issues!

Once you have created your repo, you should have a url that looks something like this: https://github.com/UVaCS4720/ios-mini-app-s17-applename.git

iOS Device Information

  • iTunes Accounts: You may register your own iTunes account for use with the device or you may create a dummy account if you so desire. However, you MUST do a factory restore on the iPod before turning it in to remove all of your data, settings, and applications.
  • iTunes App Store: The iPods should be used only for educational purposes and not as a personal device. You can add your iTunes account to this device, but that any charges related to purchasing items from the store are your responsibility.
  • Getting Online: The iPod may or may not be registered for access on the UVa network. Follow instructions here to get online: http://its.virginia.edu/mobile/ios.html#manual. After you return your device, make sure to remove its registration from the ITS system.
  • Setting a Passcode: If you set a passcode, please set it as 0000 so that we can unlock it if needed.
  • Problems?: Contact Prof. Mark Sherriff at sherriff@virginia.edu.

Project Description

For your iOS Mini App, you are going to build a simple UVa Bucket List app - just like you did for Android. Users will be able to open this app and add items to their bucket list of things that they want to do before graduation. Each item will have a name, description, latitude, longitude, and a way to record whether it has been completed or not. Since we are early in the semester and have not yet covered data storage, the app should pre-populate with just a few example items at start up and work as intended while in use, but it does not have to remember the state of the list from run to run.

Requirements and Specifications

Your app must meet the following requirements and specifications. Deviating from these will result in a reduced grade.

You will be doing this app in Swift 3. A large number of tutorials you will find will be using Swift 2. In many cases, Xcode will autocorrect this code for you, but you need to be cognizant of it and adapt accordingly. You can't just copy/paste and assume everything will work!

The app shall be made up of four total screens - the launch screen, a list screen, a create new item screen, and an item information screen. More detailed information about each scene is found below.

You will (most likely) have some set of the following files in your project:

  • AppDelegate.swift - Basically the "main" for the entire app. You probably won't touch this.
  • AddItemViewController.swift - The Add New Item controller code.
  • EditItemViewController.swift - The Edit Item controller code.
  • Main.storyboard - The storyboard for most of your app (not count the launch screen).
  • LaunchScreen.storyboard - Built-in by default, you just need to add your names to this.
  • BucketItem.swift - The model class for this app.
  • BucketListTableViewController.swfit - The controller for the list screen.
  • BucketListTableViewCell.swift - Effectively the adapter for this app if you think of the Android version.

BucketListTableViewController, BucketListTableViewCell, and BucketItem

A very large portion of your overall code base will go here. There are a LOT of tutorials out there on how to do this. PLEASE read through several to get a feel for all of the different functions you have to override, etc. Here is a sampling:

Also please check the lecture notes for example code on how to do a list like this!

The requirements are basically the same as the Android version:

  1. The list should be sorted first by whether the item still needs to be done or not (completed items move to the bottom), then by date (with more recent dates at the top). (This is the same as the Android project.)
  2. Swiping right to left should show a button to mark the item done and to edit the item.
  3. The button should swap the done / not done state, and also change the background color of the cell to show its state.
  4. Tapping on the + in the upper right takes you to the add new screen.

Add Item and Edit Item

  1. You should have Cancel and Save buttons along the top in a Navigation Controller.
  2. Make sure that the numeric fields are numeric entry and that the date is a date-only spinner.
  3. Added or edited items should appear in the list upon save and the order fixed if needed.
  4. It is possible to use only one scene to do both add and edit. If you want to do this, you are welcome to do so, but note that it can be a bit more complicated (if overall it is less code).

Moving between scenes and passing data requires the use of segues. Examples:

Storyboards

Layout management can be interesting in Swift and Xcode. Again, here are some resources:

Example Screenshots

Launch screen (just make sure it has your names and IDs):
List Activity

Main list of items that should appear on launch:
List Activity

Adding a new item:
List Activity

New item added to list:
List Activity

Swipe to mark done or edit item:
List Activity

Marked done:
List Activity

Milestone Submission - Due: Monday, February 13 @ 11:55 PM

You should have at least the main list screen appearing, with the + button and a pre-populated list, plus one other piece of basic functionality of your choice.

Grading Rubric:

Out of 20 possible points:

  • 5 pts: App can launch properly
  • 5 pts: The list is pre-populated and a + button appears
  • 5 pts: Some other basic functionality is apparent
  • 5 pts: Doesn’t crash / looks reasonable

Submit:

All code must be kept in the Github repo you created as a part of your partner creation process above. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline.

Final Submission - Due: Monday, February 20 @ 11:55 PM

You should have all required features completed plus a project report in PDF form that you will put in the root of your repo.

Project Report:

Your documentation must include:

  • Team member list
  • Device Name
  • Project/App Title
  • Basic instructions on usage
  • Any special info we need to run the app
  • Lessons learned (at least half a page)

Grading Rubric:

iOS Final Build (out of 100):

/5 pts: App can launch properly and a screen with a pre-populated, sorted list appears
/10 pts: Tapping on the + button launches the Add New Item scene
/5 pts: The Add New Item scene has all appropriate fields
/15 pts: The new item is put into the list in the correct location after saving
/10 pts: Swiping right to left gives a button that registers the item as complete and it moves to the bottom of the list
/5 pts: Tapping the Edit button in the slide menu opens the Edit Item scene
/10 pts: The Edit Item scene is pre-populated with all appropriate data
/15 pts: Changes made in the Edit Item scene are properly reflected back in the list
/10 pts: The Cancel button in the upper left corner work properly for both Add New Item and Edit Item
/5 pts: App does not crash on rotate (fully resetting the entire app on rotate or a hard lock: -2)
/5 pts: Design / Style / Appearance / Usability
/5 pts: Documentation / Report

Submit:

All code must be kept in the Github repo you created as a part of your partner creation process above. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline. Please make sure that the latest version of your report is in PDF format in the root of your repository.

Team Member Evaluations: Please fill out this form SEPARATELY FOR EACH TEAM MEMBER on your team https://docs.google.com/forms/d/1bCwa7MUaNy9vH0g3VRTvRxJb9s8HFW_a7BSRhszUIIw/viewform

more ...