iOS Developer Evaluation for TaaS - Level I

Register
Submit a solution
The challenge is finished.

Challenge Overview

This series of challenges is designed to evaluate your skills as native iOS developer. Upon successful completion of the Level I Challenge, we will invite you to Level II. We are still developing additional challenges in this series to test the wide range of iOS competencies, so there may be more challenges beyond level II. Once you have successfully completed at least the intermediate level challenges, you will become eligible to join TaaS groups that require the iOS development skill set. Those with basic and advanced level skills, especially those without Topcoder records in iOS development, are strongly encouraged to participate.

This first challenge will cover UI development using general iOS UI components.

Technologies

  • Swift

  • iOS 13 SDK

  • Minimum target iOS version is 11

Requirements

In this challenge you need to develop iOS native app with the following requirements:

Main screen

When the app is launched it shows the main screen that contains:

  • 3 tabs at the bottom: FAQ, Images, Form;

  • Navigation bar with a title

  • FAQ screen opened by default (showing its title and content).

  • Navigation bar should have "Share" button which will allow user to share current screen's screenshot using standard iOS dialog.

When user taps on any of the bottom buttons corresponding screen should be opened, title should be changed correspondingly and the button should be highlighted to reflect the opened screen.

FAQ screen

This screen shows an introduction text with a few images and a dynamic table with a list of favorite answered questions.

  • The content should be dynamically loaded from the embedded JSON file.

  • There should be an introduction multiline text and 2-3 images (the number of images can be changed in JSON file) before the table and they should be scrollable along with the table and layed out using constrains added in the code:

[ <introduction> ]

[ <image 1>]

[ <image 2>] 

[ <image N>]

[ <FAQ table> ]

  • Images should be loaded from Internet.

  • By default the table shows only questions and when user taps on a row the row should expand and show the answer in the following format:

 

This is sample question?

This is sample answer.

 
  • The questions are left aligned and answers are right aligned. 

  • The cell height should be dynamic to be sufficient for the text.

  • Different questions and answers should have different length to demonstrate how the app lays out cells with different heights.

  • If user taps again on the cell, then it is collapsed and show question only.

Images screen

This screen shows a collection of images and “Action” button at the bottom.

  • The content should be dynamically loaded.

  • There should be “+” button in navigation bar to allow user to add new image.

  • The images should be persistent (if user adds image, then it will be shown even after relaunching the app).

  • If the image is in GIF format, then it should be animated. By default the app should show a few images in different formats: JPEG, PNG, GIF.

  • When user taps “Action” button it should simulate some action (show UIActivityIndicator), and show “Completed!” alert after a few seconds.

  • The collection should show 2 images in a row by default and the number of columns should be configurable in Settings app. If it’s changed to 3, for example, the collection should show 3 images in a row. 

  • The collection should have some fixed space between the images, e.g. 10pt, and some space to the borders, e.g. 15pt.

  • The cells should be square and show whole image (aspect fill). You may add 1pt border for the cell to make it easier to review the cell size.

Form screen

The screen shows a form for sending an email.

  • The screen contains 2 text fields and “Send” button.

  • First field is used to enter email address.

  • Second field is used to enter a text of any length and it should be automatically extended (change its height) to show all entered text.

  • By tapping “Send” button user can send an email with the entered text to the given email address.

  • After email is sent it should show a message about the success.

General requirements

  • All view controllers should be done in a single storyboard.

  • It’s not allowed to use segues to present subscreens (it should be done in code).

  • The code should be properly documented.

Important notes

  • There are no Appeals / Appeals Response in this Challenge. Copilot / PM decision is final.

  • Once you complete this challenge, please notify us in the forum so that we could verify and move you to Level 2 challenge asap.



Final Submission Guidelines

Submit a zip archive, including:
  • The full source code of your app.
  • A video showing your app in action. Please upload your video elsewhere (like in Youtube, Google Drive, Dropbox etc) and share the link in your submission.
  • README.md file describing how to deploy and run your app.

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30121896