• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A component-based library for UITableView

M80TableViewComponent

A component-based library for UITableView 中文į‰ˆæœŦ

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

pod 'M80TableViewComponent'

QuickStart

Define custom component

@implementation M80ItemComponent

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

- (CGFloat)height
{
    return 44.0;
}

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

@end

Compose them

- (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