Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/xiangwangfeng/m80tableviewcomponent

A component-based library for UITableView
https://github.com/xiangwangfeng/m80tableviewcomponent

Last synced: about 1 month ago
JSON representation

A component-based library for UITableView

Awesome Lists containing this project

README

        

# M80TableViewComponent

A component-based library for UITableView [δΈ­ζ–‡η‰ˆζœ¬](./Documents/README.md)

| | Main Features |
----------|-----------------
πŸ™… | No more indexpath and array out of range
πŸ‘‹ | Segregation of duties
😁 | UITableViewCell will be automatically reusable
🏑 | Data-driven
βœ… | Safe model to view mapping
➑️ | One way binding
πŸ“₯ | Easy to compose different components together
πŸš€ | Simple support for height cache and precalculate
πŸ”‘ | ListDiff supported

# System Requirements

* iOS 9.0 or higher
* Xcode 11.0 or higher

# Installation

### Cocoapods

```ruby
pod 'M80TableViewComponent'
```

# QuickStart

### Define custom component

```objc
@implementation M80ItemComponent

- (Class)cellClass
{
return UITableViewCell.class;
}

- (CGFloat)height
{
return 44.0;
}

- (void)configure:(UITableViewCell *)cell
{
cell.textLabel.text = self.title;
}

@end

```

### Compose them

```objc

- (void)viewDidLoad
{
[super viewDidLoad];

NSArray *components = @[[M80ItemComponent component:@"Text" vcName:@"M80TextViewController"],
[M80ItemComponent component:@"ListDiff" vcName:@"M80ListDiffViewController"],
[M80ItemComponent component:@"Feed" vcName:@"M80FeedViewController"]];

M80TableViewSectionComponent *section = [M80TableViewSectionComponent new];
section.components = components;

M80TableViewComponent *tableViewComponent = [[M80TableViewComponent alloc] initWithTableView:self.tableView];
tableViewComponent.sections = @[section];
tableViewComponent.context = context;

self.tableViewComponent = tableViewComponent;
}

```

# Key Classes
| Class | Usage |
----------|-----------------
M80TableViewComponent | TableView component which holds many section components
M80TableViewSectionComponent | Section component which holds many cell components
M80TableViewCellComponent | Cell component which is used for managing UITableViewCell
M80TableViewViewComponent | View componnet
M80TableViewComponentContext | Class which holds the context information for the tableview component