I'm building an app that displays objects of a certain type in different view controllers (three or four UITableViewController in this case).
In one place they're going to be something like latest objects, in some other place search results and so on... So at the end of the day, the controllers are almost entirely similar. They only have a few variations. For example, the SearchTableViewController has a search bar and implements methods that are necessary for the feature.
Other than that, classes "share" most of their code. What can I do to make this code truly shared and not just duplicated as it is at the moment?
Class design dilemma - duplicated code for fairly close features
32 Views Asked by sf89 At
1
There are 1 best solutions below
Related Questions in IOS
- URLSession requesting JSON array from server not working
- Incorrect display of LinearGradientBrush in IOS
- Module not found when building flutter app for IOS
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Occasional crash at NSURLSessionDataTask dataTaskWithRequest:completionHandler:
- Expo Deep linking on iOS is not working (because of Google sign-in?)
- On iOS, the keyboard does not offer a 6-character SMS code
- Hi, there is an error happened when I build my flutter app, after I'm installing firebase packages occurs that error
- The copy/paste functionalities don't work only on iOS in the Flutter app
- Hide LiveActivityIntent Button from Shortcuts App
- While Running Github Actions Pipeline: No Signing Certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID
- Actionable notification api call not working in background
- Accessibility : Full keyboard access with scroll view in swiftui
- There is a problem with the request entity - You are not allowed to create 'iOS' profile with App ID 'XXXX'
- I am getting "binding has not yet been initialized" error when trying to connect firebase with flutter
Related Questions in COCOA-TOUCH
- How to get MetricKit SignPost Metrics data formulated into battery usage % for feature wise usage in iOS app?
- Clicking the right mouse button. Mac M1 (Designed for iPad)
- iOS Swift : How to detect that other apps are being use by the user or not?
- Text background color for newlines in TextKit 2
- How to build ios release bundle in flutter app?
- will my application be rejected if i use UIApplication.value(forKeyPath: #keyPath(UIApplication.shared)) as? UIApplication
- Check number of touches in hitTest - Swift
- CallDirectory app extension runs out of memory without beginning request
- How do I properly design my own custom table cell?
- Reorder multiple items in a UICollectionView
- How can I transfer data between two files without segue?
- Deleting from the start of the UITextfield clears the whole textfield
- Error Running terminal command in Mac App
- How to get C char * string value in swift?
- TextView adds bottom padding/space when text is one line
Related Questions in SWIFT
- Navigate after logged in with webservice
- URLSession requesting JSON array from server not working
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Protect OpenAI key using Firebase function
- How to correct error: "Cannot convert value of type 'MyType.Type' to expected argument type 'Binding<MyType>'"?
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Using @Bindable with a Observable type in SwiftUI
- How to make a scroll view of 9 images in a forEach loop open on image 6 if image 6 is clicked on from a grid?
- Using MTLPixelFormat.rgba16Float results in random round-off errors
- Search and highlight text of current text in PDFKit Swift
- How is passing a function as a parameter related to escaping autoclosure?
- Actionable notification api call not working in background
- Custom layout occupies all horizontal space
- Is it possible to fix slow CKAsset loading on Cloudkit?
- Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value - MapView.isMyLocationEnabled
Related Questions in COCOA-DESIGN-PATTERNS
- How to implement simple MVC design pattern in Swift?
- What design pattern do I need for a single object which can receive data from different sources?
- iOS Design Patterns | Singleton
- Collecting data from multiple ViewControllers in Swift
- object communication when object is not kvc compliant in Swift
- Patterns for Showing a Toast Popup with Custom UITableViewCell
- Should I check user auth ( user name , password, device token) in webservice every time when my mobile application is launch?
- Where should custom, reusable animation code go?
- Real scenario for implementation of MVC vs MVVM vs VIPER for iOS based projects
- In Interface Builder, how do I bind to a property of a class via another class?
- Do I really need a shared instance on a singleton?
- Why Cocoa design patterns not representing best practices on Apple documentation anymore?
- Use Case involving Stack Views, Table Views & Scroll Views in Swift 2/Xcode7
- Is this singleton design pattern bad? Is it wrong to use Singleton in this case?
- iOS Design Pattern Implementation
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 # Hahtags
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?
If the UI is significantly different between the view controllers then you probably need to subclass. But if the differences are in the data model or the way the data is processed, then you can maybe use a generic view controller and design your data model to be more generic, so it can be viewed, sorted, or searched in unified manner.
In my experience, however, there's a natural instinct in all developers to avoid duplication at any cost, and it often gets in the way of getting the job done. From a pragmatic point-of-view, I'd suggest implementing it in the most "obvious" way, and think about optimising it later. Only then will you know where there are duplications you can get rid of.