πŸ›  A flexible and easy template created to speed up the development of your iOS application based on the MVP pattern.

Overview

Model-View-Presenter template

A flexible and easy template created to speed up the development of your iOS application based on the MVP pattern. This template generates all the important components of the MVP pattern, including the Builder.

Table of contents

Installation

You may install this template either using a shell script, or manually, by copying the template to the template directory.

Shell

  • Just run this command in your terminal:

    $ sh install.sh

Manual

  • Open ~/Library/Developer/Xcode/Templates/Architecture/ and move "MVP.xctemplate" folder there. If you do not have Templates or Architecture folders you should create them.

Usage

To create a module using the template, click on "New file..." in the folder where you want to add the module. You may also use shortcut ⌘ + N. Finally, find the MVP file in the Architecture section.

Options

This template provides several options so that you can flexibly configure your new modules. Let's look at each in detail.

  • Module: this field simply describes the module name.
  • Storyboad based: this field is used to determine whether your view is built in Storyboard.
  • Subclass of: in this field, you must choose from which class your View should inherit from.
  • Also create XIB file for user interface: if checkbox is checked XIB file will be created inside your module.
  • Also create Router file: if checkbox is checked your module will have Router class.

Structure

After creating the module, you will see that several files were created based on your choice. Unfortunately, folder structuring is only available for Project templates, so all files will be created in one folder.

Contribution

If you struggle with something feel free to open an issue. Pull requests are also appreciated.

License

This template is under the terms and conditions of the MIT license.

MIT License

Copyright (c) 2021 Tamerlan Satualdypov

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
You might also like...
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.

LinkedLog Xcode Plugin LinkedLog is a Xcode plugin that includes a Xcode PCH file template that adds the macros LLog and LLogF. The LLog macro will wo

Puma - A set of build utilities to automate mobile application development and deployment
Puma - A set of build utilities to automate mobile application development and deployment

Puma β†’ https://github.com/onmyway133/Swiftlane Puma is a set of build utilities

Static Native Template and Dynamic Styling without any other app release

FileManager Project Students and Freshers, Good opportunity for you to learn and contribute in this project. Here you would learn how you can change t

A zero-code template app that demonstrates how to use TheraForge's APIs and can be used for fast prototyping
A zero-code template app that demonstrates how to use TheraForge's APIs and can be used for fast prototyping

TheraForge MagicBox 1.0.0-beta The Open TheraForge (OTF) MagicBox app is a template for creating digital health solutions that help people better mana

Xamoom tourism template iOS

xamoom-tourism-template-iOS Pods Install pods via command pod install Buid system Open File - Workpace settings Select Legacy Build System Check Do n

A simple self-development challenge application that aimed to learn

Movie List Challenge A simple self-development challenge application that aimed to learn "The Composable Architecture" basics and build a reactive str

Restaurant - Educational application from the Apple Mobile Development Course for MDA
Restaurant - Educational application from the Apple Mobile Development Course for MDA

Restaurant Educational application from the Apple Mobile Development Course for

A template Vapor app with nginx frontend.
A template Vapor app with nginx frontend.

This is an example Vapor app. It contains the app itself, as well as surrounding components (Postgres database, nginx frontend for providing secure connection), all runnable out of the box with docker compose. It is a good starting point for Vapor development of an API server which you could access from macOS and iOS clients.

The template for Delta Client plugins.

Delta Plugin Template This repository is a template for Delta Client plugins. To create a plugin, create a repo from this template repo and then repla

Owner
Tamerlan Satualdypov
Left brain for code, right brain for design. Self-educated iOS developer from Kazakhstan. Love open source.
Tamerlan Satualdypov
This is MVP pattern testing with Swift.

sample-swift-mvp MVP νŒ¨ν„΄μ— λŒ€ν•œ 이해λ₯Ό 높이기 μœ„ν•΄μ„œ μƒ˜ν”Œ μ½”λ“œ μž‘μ„± 및 기둝 MVP νŒ¨ν„΄ MVP(Model-View-Presenter) νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λ‹€ M (Model) - 데이터 λͺ¨λΈ - μ‹€μ§ˆμ μΈ 데이터 V (View) - M

Youngwoo Lee 0 Nov 10, 2021
iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture

iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture, RIBs; Repository Pattern, Rxflow, Swinject, Tuist, Xcodegen, Cocoapods, SPM, Carthage + Rome

null 123 Dec 21, 2022
Project 03 I created for "iOS & Swift - The Complete iOS App Development Bootcamp"

Dicee This is the third project I created for "iOS & Swift - The Complete iOS App Development Bootcamp" Our Goal The objective of this tutorial is to

Lukas Goodfellow 0 Dec 23, 2021
The template for SwiftPM-based highly modularized (iOS) applications

basic-ios-template Getting started Fork the repo as a template. Create a local folder for your app and navigate to it mkdir <YourAppName> cd <YourAppN

capturecontext 32 Jan 1, 2023
XCode Preview template for UIkit based project.

SwiftPreview XCode Preview template for UIkit based project. Support custom file template class inherit from UIView and UIViewController. How to use?

Won Heo 10 Mar 31, 2022
UIKit-based app project template for Swift Playgrounds 4

playgrounds-uikit-app This is a simplistic sample template for Swift Playgrounds 4 to begin with a UIKit-based app delegate & window scene instead of

Steven Troughton-Smith 39 Sep 19, 2022
A navigation frameword based on the Coordinator pattern and is a compact version from XCoordinator.

Coordinator A navigation frameword based on the Coordinator pattern and is a compact version from XCoordinator. Example To run the example project, cl

Duc Pham 3 Jul 9, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Introduction Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the latest

Respresso 10 Nov 8, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso Android client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import

Respresso 11 May 27, 2021
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso iOS client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the

Respresso 50 May 1, 2021