| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- //
- // FLEXTableView.m
- // FLEX
- //
- // Created by Tanner on 4/17/19.
- // Copyright © 2020 FLEX Team. All rights reserved.
- //
- #import "FLEXTableView.h"
- #import "FLEXUtility.h"
- #import "FLEXSubtitleTableViewCell.h"
- #import "FLEXMultilineTableViewCell.h"
- #import "FLEXKeyValueTableViewCell.h"
- #import "FLEXCodeFontCell.h"
- FLEXTableViewCellReuseIdentifier const kFLEXDefaultCell = @"kFLEXDefaultCell";
- FLEXTableViewCellReuseIdentifier const kFLEXDetailCell = @"kFLEXDetailCell";
- FLEXTableViewCellReuseIdentifier const kFLEXMultilineCell = @"kFLEXMultilineCell";
- FLEXTableViewCellReuseIdentifier const kFLEXMultilineDetailCell = @"kFLEXMultilineDetailCell";
- FLEXTableViewCellReuseIdentifier const kFLEXKeyValueCell = @"kFLEXKeyValueCell";
- FLEXTableViewCellReuseIdentifier const kFLEXCodeFontCell = @"kFLEXCodeFontCell";
- #pragma mark Private
- @interface UITableView (Private)
- - (CGFloat)_heightForHeaderInSection:(NSInteger)section;
- - (NSString *)_titleForHeaderInSection:(NSInteger)section;
- @end
- @implementation FLEXTableView
- + (instancetype)flexDefaultTableView {
- #if FLEX_AT_LEAST_IOS13_SDK
- if (@available(iOS 13.0, *)) {
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleInsetGrouped];
- } else {
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
- }
- #else
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
- #endif
- }
- #pragma mark - Initialization
- + (id)groupedTableView {
- #if FLEX_AT_LEAST_IOS13_SDK
- if (@available(iOS 13.0, *)) {
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleInsetGrouped];
- } else {
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
- }
- #else
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
- #endif
- }
- + (id)plainTableView {
- return [[self alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
- }
- + (id)style:(UITableViewStyle)style {
- return [[self alloc] initWithFrame:CGRectZero style:style];
- }
- - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
- self = [super initWithFrame:frame style:style];
- if (self) {
- [self registerCells:@{
- kFLEXDefaultCell : [FLEXTableViewCell class],
- kFLEXDetailCell : [FLEXSubtitleTableViewCell class],
- kFLEXMultilineCell : [FLEXMultilineTableViewCell class],
- kFLEXMultilineDetailCell : [FLEXMultilineDetailTableViewCell class],
- kFLEXKeyValueCell : [FLEXKeyValueTableViewCell class],
- kFLEXCodeFontCell : [FLEXCodeFontCell class],
- }];
- }
- return self;
- }
- #pragma mark - Public
- - (void)registerCells:(NSDictionary<NSString*, Class> *)registrationMapping {
- [registrationMapping enumerateKeysAndObjectsUsingBlock:^(NSString *identifier, Class cellClass, BOOL *stop) {
- [self registerClass:cellClass forCellReuseIdentifier:identifier];
- }];
- }
- @end
|