In this episode, we complete the Game UI. We put the final touches to the ResultsViewController by implementing the wrong answer cell and refactoring anything we see fit. Finally, we run the app and make sure the layout follows the guidelines of the prototype.
In this episode, we continue the implementation of ResultsViewController by test-driving the configuration of the cells. As we showcased in episode 7, the behavior and the layout of a view are two separate things, which can be tested and implemented independently.
In this episode, we continue the development of the UI as we start implementing the ResultsViewController, a class responsible for showing the result of a finished game. Unlike the QuestionViewController, we reach a point where we need to deal with more complicated logic for displaying the right information on the screen...
In this episode, we finish the QuestionViewController implementation by test-driving the table view delegate behavior. We start by refactoring the delegate selection in the QuestionViewController tests, and we lay out the UI to match the prototype.
In this episode, we refactor the QuestionViewController class and its tests, and we introduce a way for notifying a delegate when the user selects an answer. We start the test refactoring by making use of a factory method with default values, so, in the event of...
In this episode, we dive in the UI side by following the same principles and disciplines we did before. We create and test-drive the QuestionViewController, a class responsible for displaying a question and its options for answers.
In this episode, we finish the Game Flow by creating a solution for accumulating the questions and answers and a new method for routing to the result. We use the mutation testing technique to check if the behavior of the Flow class is well covered by our tests...
We begin the third tomato by sanitizing our FlowTest class. We refactor the tests by removing duplicated code, we talk about different ways for organizing the test setup code and we showcase the factory method for the creation of the system under test. These changes will prove very valuable as the project grows.
In this episode we continue the development of the Flow as we start progressing to next questions. We accomplish this by providing a closure as the answer callback in the Router protocol. We discuss about the meaning of placing the @escaping instruction in a protocol and we examine our options for dealing with retain cycles and memory management...
In this episode, we dive into our first lines of code. Before we begin building the project, we agree on a set of rules such as: Follow the Pomodoro Technique for segmenting workload and time Develop the system by writing tests first Separate the responsibilities of the system in modules We start by creating the QuizEngine project, a module responsible...
In the first episode of the series, we discuss the idea of building a Quiz app for iOS. We kick off the season by discussing some of the features of the app such as question and answer formats and possible multiplayer options...
We are very excited to share with you the launch of our new series Professional iOS Engineering on the Essential Developer's Youtube channel. During the series Caio and Mike pair program and demonstrate the discipline of test driven development, the power of modular systems, and how to welcome future requirements...