MzTableView
Fast & Easy UITableView implementation for single type cell TableView.
Install / Use
/learn @ShRoO0oM/MzTableViewREADME
MzTableView
Introduction
Implement your TableView with only 2 line of code! For feeding your UITableView you don't need cellForRowAt numberOfRowsInSections and other boilerplate code anymore! Please note that multiple sections, header and footer is not supported yet
Requirements
Your tableView should match the below requirements otherwise MzTableView is not going to work for you :(
- Your tableView contains one type of cell
- Your tableView contains one section
Which 90% of tableView designs meet the requirements!
Example
To run the example project, clone the repo, and run pod install from the Example directory first.
Installation
MzTableView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'MzTableView'
Demo
You can easily find and run the demo app in example folder.
Usage
First, your cell should confirm to MzTableViewCell protocol:
public protocol MzTableViewCell: UITableViewCell {
associatedtype CellViewModel
func configureCellWith(_ item: CellViewModel)
}
CellViewModel is the cell's ViewModel for assigning data to cell's subviews, then configure your cell using configureCellWith method.
For Example we want to show list of stundets which each of our cells has one image and a title, so our CellViewModel looks like:
struct StudentCellViewModel {
var image: UIImage
var title: String
}
so your cell looks like:
extension ExampleTableViewCell: MzTableViewCell {
typealias CellViewModel = StudentCellViewModel
func configureCellWith(_ item: StudentCellViewModel) {
cellTitle.text = item.title
cellImage.image = item.image
}
}
then in your UIViewController you should create MzTableViewDataSource object:
public init(cellHeight: CGFloat?, tableView: UITableView, items: [T.CellViewModel] = [], animationType: AnimationType = .none
cellHeightis the tableView cell height ( return 0 or nil for self sizing cells)tableViewis the ViewController's UITableView.itemsis the initial items of your tableView ( you can put empty array then append to it later as shown below.)animationTypeis an optional enum if you want animation for your cells (.none is default)
then assign the object to your tableView dataSource and delegate.
self.exampleTableView.dataSource = mzDataSource
self.exampleTableView.delegate = mzDataSource
for adding data to your tableView just use:
mZdataSource.appendItemsToTableView([items])
which items is the array of your cell's view model. ( CellViewModel )
No more reloadData, insertRows and ... . MzDataSource is handling all!
You can also remove items from your tableView using:
mZdataSource.removeItemFromTableView(row: rowToDelete)
Or you may refresh all of your tableView with new data:
mZdataSource.refreshWithNewItems(items)
for getting selected cell you can use didSelectRowAt closure which is property of mZdataSource.
mZdataSource.didSelectRowAt = { [weak self] index in
print(index)
}
You can also have nice animations too, just pass the animationType when you are creating the dataSource object with your desired duration. If you want use your custom animations just read the cell from:
mZdataSource.willDisplayCell = { [weak self] (index,cell) in
// animate your cell
}
If the usage guide wasn't useful,please run and look the example project.It will boost you 😇.
Author
mohammadz74, mohammad_z74@icloud.com
License
MzTableView is available under the MIT license. See the LICENSE file for more info.
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
