/codepath-yelp

CodePath iOS University 2016 - Week 3 Assignment

Primary LanguageSwift

Project 3 - Yelp

Yelp is a Yelp search app using the Yelp API.

Time spent: 12 hours spent in total

User Stories

The following required functionality is completed:

  • Table rows for search results should be dynamic height according to the content height.
  • Custom cells should have the proper Auto Layout constraints.
  • Search bar should be in the navigation bar (doesn't have to expand to show location like the real Yelp app does).

The following optional features are implemented:

  • Search results page
    • Infinite scroll for restaurant results.
    • Implement map view of restaurant results.
  • Implement the restaurant detail page.

The following additional features are implemented:

  • Uses current location to get relevant search results
  • Explore a restaurant's menu from within the app
  • Call a business from within the app
  • Read a review highlight from within the app
  • Tap to get directions to a business
  • Map all search results; tap a pin on the map to segue to business details view
  • Multiple navigation controllers with Tab Bar
  • List of categories to search from (static table view controller)
  • Pull-to-refresh (useful if your location has changed!)
  • Sort by distance or rating
  • Filter by multiple distance levels
  • Search bars are connected to Yelp Search API (not limited to searching table view cells; can search for any local business)
  • Search terms and filters persist between relaunches, using NSUserDefaults
  • App Icon resembles the real Yelp app
  • Launch screen resembles the real Yelp app
  • Navigation bars, buttons, icons, and theme resembles the real Yelp app

Video Walkthrough

Here's a walkthrough of implemented user stories:

Video Walkthrough

GIF created with LiceCap.

Notes

Shakeel repairs EVERYTHING, not just iPhones... LOL

Auto Layouts became much easier as I got the hang of it. One pro-tip we should have learned offically is the fact that you can Control+Drag from one storyboard element to another in order to relate both of them in a new Auto Layout constraint... for me, this was an essential technique, since there were occasions when an element couldn't "see" another element in drop-down menus when setting new constraints the "proper" way.

License

Copyright ©2016 Tejen Hasmukh Patel

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.