I've decided to try migrating my existing project architecture to VIPER. VIPER seems popular due to the way it separates modules. However, I have 2 similar view controllers that inherit from CustomVC. These 2 view controllers call for super methods to setup UI and run some business logic. If I leave the UI functionality in CustomVC, should I move the business logic to an analogous CustomPresenter superclass? Should I move common navigation behavior to an analogous CustomInteractor class? Okay, I do that, then what: do the 2 view controller modules inherit from the CustomPresenter and/or CustomInteractor classes? In the answers, please guide me toward what is acceptable in this situation, considering VIPER architecture goals. Thank you.
Migrating to VIPER from inherited UI+business-logic/etc superclass
222 Views Asked by Anatolii Rudenko At
1
There are 1 best solutions below
Related Questions in IOS
- Overlapping UICollectionView in storyboard
- Cannot pod spec lint because of undeclared type errors
- Is the transactionReceipt data present in dataWithContentsOfURL?
- UIWebView Screen Fitting Issue
- ZXingObjC encoding issues
- iOS: None of the valid provisioning profiles allowed the specific entitlements
- How to hide "Now playing url" in control center
- CloudKit: Preventing Duplicate Records
- Slow performance on ipad erasing image
- Swift code with multiple NSDateFormatter - optimization
- iOS 8.3 Safari crashes on input type=file
- TTTTimeIntervalFormatter always returns strings in English
- How do I add multiple in app purchases in Swift Spritekit?
- Setup code for xibs in iOS. -awakFromNb:
- iOS Voice Over only reads out the title of any alert views
Related Questions in SWIFT
- Overlapping UICollectionView in storyboard
- Cannot pod spec lint because of undeclared type errors
- Swift code with multiple NSDateFormatter - optimization
- How do I add multiple in app purchases in Swift Spritekit?
- cellForRowAtIndexPath and prepareForSegue return different label colors
- Getting this message in my console in xcode "Ignoring restoreCompletedTransactionsWithApplicationUsername: because already restoring transactions"?
- Change background of an Accessory View in a UITableViewCell
- fade in an bounce animation subview
- Create a PFObject and PFRelation after PFUser Sign Up
- Swift 2 - Pattern matching in "if"
- How do I give inputs through NSURL
- How do I add custom cells to TableView in Swift?
- UIWebView not loading URL in simulator
- Compiler complains that 'Expression resolved to unused function' when removing index in array of functions
- Cast from 'Int?' to unrelated type 'NSNumber' always fails
Related Questions in XCODE
- Using Storyboard Reference
- Getting this message in my console in xcode "Ignoring restoreCompletedTransactionsWithApplicationUsername: because already restoring transactions"?
- Error when creating UIImage
- fade in an bounce animation subview
- How to delete static library ".a" file from xcode project?
- Error in main.storyboard
- Is the compiler Xcode uses to produce Assembly code a bad compiler?
- Using paths bonded to a XCode project to be shared
- How to set the time of Local notification in app to random between two times? (swift)
- "Invalid Signature, code object not signed at all" error
- Alarming memory increase with custom segue
- Display both alertTitle and AlertBody on a custom WatchKit notification
- How to make a CocoaPods project work on OS X El Capitan & Xcode 7 Beta?
- Cannot use CTRL+Drag for making a button action in Xcode?
- Labels properties changing in Xcode
Related Questions in ARCHITECTURE
- Is it recommended to use Node.js for an online room booking web application?
- Defining Callbacks for custom Javascript Functions
- iOS: app doesn't pass the upload for the architecture
- What is the value of multiple Hybris extensions?
- os kern error : "ld: symbol(s) not found for architecture x86_64"
- How to avoid context in business layer
- Libgdx: Objects creating other objects
- Do software engineers in general have no idea about Software Architecture Design?
- Java generic class that contains an instance of implementation of generic interface
- Web application architecture, N-tiers, 3 tiers or multi-layer
- Is having 3 layers Controller, BO and DAO a standard way? why not just Controller and DAO?
- Architecture for creating a JavaScript framework
- Symfony2 proper use for services
- Refactor some calls on each Zf2 controller action
- Architecture - Task Scheduling (Data File Processing) - Windows Service
Related Questions in VIPER-ARCHITECTURE
- IOS VIPER: How protocol helps in Unit Testing?
- TDD VS BDD: REST Service
- ViewModel for UITableView datasource in VIPER, swift
- Swift 3, keep realm out of appdelegate
- Modules as independent frameworks in an Xcode project
- Swift 5 VIPER template generator (Permission denied)
- Swift handling error responsibilities using VIPER and services
- Combine - Subscriber gets cancelled silently when subscribing a second time
- Structuring UITableView in VIPER
- iOS Swift - run a specific VIPER module without navigating through all screens
- How to use navigation component with VIPER architecture?
- Thread 1 EXC_BAD_ACCESS (code=2, address=0x7ffeeb1aeff8)
- Objc - Extension - TableView Delegate
- Where does Edit text validation happens in VIPER architecture ( Android )
- EXC_CRASH (SIGABRT) UIPopoverPresentationController presentationTransitionWillBegin
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
So no, once all the UI, business logic, and sensor/datastore/networking data-acquisition/exchange has been entirely separated from each other, the view controllers would no longer have anything directly to do with CustomPresenter or with CustomInteractor or CustomRouter, most especially no inheritance from them. All interactions among CustomUI & its subclasses versus CustomPresenter & its subclasses (if any) versus CustomInteractor & its subclasses (if any) versus CustomRouter & its subclasses (if any) would be via pure app-domain messaging (or effect-event subscription) interzone via app-domain lightweight entities—i.e., indirect interaction through V view zone's façade and/or I interactor zone's façade with P presenter zone.