Classify | iOS Universal Classifieds App Template (Swift)

Classify | iOS Universal Classifieds App Template (Swift)

Both iOS and Android version can share the same Parse database by inserting the same App Id and Client Key strings in their Configs files

Mar 8th 2017
• Added 3D Touch code in AppDelegate.swift *for iPhone 6+/7+ only), you can post a new ad and share the app with a 3D Touch on the app's icon

feb 10th 2017
• Changed the Home screen for a better User Experience (UX). Now you can search for any ad by keywords without having to select a category, alternatively you can tap a category cell to browse all ads of the selected category
• Edited Home.swift and its relative controller in Storyboard.
Jan 28th 2017
• Fixed the getFBUserData() method in Login.swift, in order for the app to have time to fetch all user's data and not crash after login with Facebook.
Jan 28th 2017
• Added Facebook login button and its relative code in Login.swift, AppDelegate.swift and Info.plist
• Updated the User Guide
• Edited logoutButt() method in Account.swift, now an Alert shows up asking confirmation for logout
• Added the following frameworks in the Xcode project:
• Changed viewWillAppear() into viewDidAppear() in Account.swift
Jan 3rd 2017
• Simply added this line of code into postAd() method in Post.swift, so the app will be able to correctly save all new/edited ads in the Classifieds class in your Parse Dashboard
    postObj[CLASSIF_IS_REPORTED] = false
Dec 15th 2016
• Edited the reportButt() method in ShowSingleAd.swift, in order to allow users to instantly report an ad instead of using the email, accordingly to new Apple EULA terms.
• Added these 2 lines in Configs.swift:
   let CLASSIF_IS_REPORTED = "isReported" 
   let CLASSIF_REPORT_MESSAGE = "reportMessage" 
• Added this line of code into the queries of Home.swift and MyAds.swift:
        query.whereKey(CLASSIF_IS_REPORTED, equalTo: false)
• Edited the cellForRow and didSelectRow delegates in Favorites.swift to prevent users to tap on reported ads
NOTE: If this is an update for you, you must first enter your Parse Dashboard, Classifieds class and add 2 columns:
one column of type Boolean, name it exactly "isReported" 
another column of type String, name it exactly "reportMessage" 
Then click over all empty fields of the isReported column and set them as False. 
Lastly you can compare the swift files mentioned above with your old ones and make changes in the code accordingly. 
Dec 9th 2016
• Edited ShowSingleAd.swift and its relative controller in the Storyboard, due to a bug on XCode 8.1, we've removed the IBOutletCollection of imageButtons and declared the 3 buttons of the preview images on as separare IBOutlets:
    @IBOutlet weak var imgButt1: UIButton!
    @IBOutlet weak var imgButt2: UIButton!
    @IBOutlet weak var imgButt3: UIButton!
Then we've edited their frame in viewDidLoad():
    imgButt1.frame = image1.frame
    imgButt2.frame = image2.frame
    imgButt3.frame = image3.frame
In  this way when you tap on a small image you'll see the right one popping up in full screen.

• Updated GoogleMobileAds.framework to its latest version
Nov 3rd 2016
• Updated to XCode 8.1
• Removed all 'contView' UIViews from their ScrollViews, since Apple has fixed the bug in Storyboard.
Sep 30th 2016
• Added Privacy rules for Camera, Photo Library, Bluetooth and Calendars into Info.plist, required by Apple for App Store submission, check this screenshot:
Sep 18th 2016
• Updated to Xcode 8
• We had to embed all the views that are in ScrollViews into a UIView called 'contView' in Storyboard, so the app will keep all layouts ok due to a bug of Xcode 8 on Autoresizing mask. 
You'll find this line of code into viewDidLoad() methods in the .swift files that have a ScrollView:
    contView.frame.size.width = view.frame.size.width
NOTE: Due to the bug on Xcode 8, every time you'll reopen your Xcode project, you will have to select those 'contView' UIViews and set their width to 320 by using the Size inspector panel on the right size
Sep 3rd 2016
• Added a query to check if you've already favorited an ad, so it prevents users from favorite it multiple times. 
The methods we've edited are:
func addToFavButt (in BrowseAds.swift)
func queryFavAds (in Favorites.swift)

We've also added the following string into Configs.swift:
   let FAV_USER_POINTER = "userPointer" 
Aug 27th 2016
• Added keywords saving in Post.swift file -> postAdButt() method
• Improved the search for keywords: we've removed the whereTxt TextField so you can search for any keyword in a single textField on the Home screen.
If this is an update for your app, you must add this line into Configs.swift file:
    let CLASSIF_KEYWORDS = "keywords" 

The best way to add such column in your Parse Dashboard is to post a new test ad, it will create the keywords column of type Array and it'll contains all words separated by space (into the Classifieds class). You can delete it after that, and you will have now to manually add all keywords for the other rows of the class, since they will all show the "undefined" filed. In order for you to do that you will have to split all words of the description, title and addressString columns into an array and add them into each row. Example, if the title of a record is "Nice pair of shoes", you will have to enter this into its keywords row:
and so on for the other words in the other rows. There's no alternative way to do this job if you already have records, you will have to spend some time to do this update and then publish your updated app to the App Store.

If this is NOT an update and you've bought the app for the first time, just ignore all this :)
Aug 23rd 2016
• Added a simple if statement into signupButt() (in SignUp.swift) to prevent users to sign up without filling all the text fields
Jun 16th 2016
• Added an if statement into postAdButt() (in Post.swift) to prevent users to post/update ads without filling all the text fields and adding at least 1 image

Classify is a complete Universal app template you can use to offer mobile classifieds service to professionals and end users, they will be able to post and edit ads all via their devices, no computer needed, additionally they can just search for what they need or browse listings by Categories and contact seller all in mobility!

Classify is very easy to customize, it has a single Main.storyboard file, Universal, native XCode project, Swift language, Parse backend hosted on

Need an html template to promote and showcase your own version of this app?

  • XCode 8.x project – Swift – 64bit
  • Universal – iOS 8/9/10+ – Storyboard
  • AdMob interstitials
  • Works with Parse backend hosted on back{4}app
  • Login and Sing Up controllers
  • Home screen with search fields and Category buttons, set favorite ads, post/edit your own ads
  • NO external CMS needed
  • PHP file to send emails with the contact form included
  • Browse all Classify ads as a visitor (you don’t need to login or signup for an account)
  • PDF User Guide included
  • PSD graphics included
  • Easy to customize, well commented code

Have fun with Classify, and don’t forget to rate it on your Downloads page if you like it!

Important Disclaimer: We’ve recently found out that some developers have bought our app templates, reskinned them just a bit and put them on sale on other source code markets similar to CodeCanyon, saying that they developed and own such source codes.
That is a serious copyright infringement, developers who buy our templates are allowed to reskin and sell them as apps on the App Store (accordingly to the License type they’ve purchased a template for), but are not allowed to put our original source codes for sale on source code markets, including CodeCanyon.
We will report developers who made copyright infringements to the competent authorities.



247 sales
as of March 25, 2017
Elite Author
Last Update March 8, 2017, 3:51 pm
Compatible With Swift
Software Version iOS 10.0.x, iOS 9.0.x, iOS 8.4.x, iOS 8.3.x, iOS 8.2.x, iOS 8.1.x, iOS 8.0.x