diff --git a/RETableViewManager/Cells/RETableViewSegmentedCell.m b/RETableViewManager/Cells/RETableViewSegmentedCell.m index bbdbc0f..6d1ef79 100644 --- a/RETableViewManager/Cells/RETableViewSegmentedCell.m +++ b/RETableViewManager/Cells/RETableViewSegmentedCell.m @@ -26,6 +26,7 @@ #import "RETableViewSegmentedCell.h" #import "RETableViewManager.h" +#import "NSString+RETableViewManagerAdditions.h" @interface RETableViewSegmentedCell () @@ -43,7 +44,7 @@ [super cellDidLoad]; self.selectionStyle = UITableViewCellSelectionStyleNone; - self.segmentedControl = [[UISegmentedControl alloc] initWithItems:self.item.titles]; + self.segmentedControl = [[UISegmentedControl alloc] initWithItems:self.item.segmentedControlTitles]; self.segmentedControl.translatesAutoresizingMaskIntoConstraints = NO; [self.segmentedControl addTarget:self action:@selector(segmentValueDidChange:) forControlEvents:UIControlEventValueChanged]; [self.contentView addSubview:self.segmentedControl]; @@ -51,6 +52,7 @@ - (void)cellWillAppear { + self.textLabel.text = self.item.title; [self.contentView removeConstraints:self.contentView.constraints]; [self.segmentedControl removeAllSegments]; CGFloat margin = (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) ? 15.0 : 10.0; @@ -62,13 +64,18 @@ attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]]; - [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[_segmentedControl]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)]]; - if (self.item.titles.count > 0) { - [self.item.titles enumerateObjectsUsingBlock:^(NSString *title, NSUInteger idx, BOOL *stop) { + if (self.item.title.length > 0) { + [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_segmentedControl(>=140)]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)]]; + } else { + [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[_segmentedControl]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)]]; + } + + if (self.item.segmentedControlTitles.count > 0) { + [self.item.segmentedControlTitles enumerateObjectsUsingBlock:^(NSString *title, NSUInteger idx, BOOL *stop) { [self.segmentedControl insertSegmentWithTitle:title atIndex:idx animated:NO]; }]; - } else if (self.item.images.count > 0) { - [self.item.images enumerateObjectsUsingBlock:^(UIImage *image, NSUInteger idx, BOOL *stop) { + } else if (self.item.segmentedControlImages.count > 0) { + [self.item.segmentedControlImages enumerateObjectsUsingBlock:^(UIImage *image, NSUInteger idx, BOOL *stop) { [self.segmentedControl insertSegmentWithImage:image atIndex:idx animated:NO]; }]; } diff --git a/RETableViewManager/Items/RESegmentedItem.h b/RETableViewManager/Items/RESegmentedItem.h index b339578..4fab7f0 100644 --- a/RETableViewManager/Items/RESegmentedItem.h +++ b/RETableViewManager/Items/RESegmentedItem.h @@ -29,20 +29,20 @@ @interface RESegmentedItem : RETableViewItem @property (assign, readwrite, nonatomic) NSInteger value; -@property (copy, readwrite, nonatomic) NSArray *titles; -@property (copy, readwrite, nonatomic) NSArray *images; +@property (copy, readwrite, nonatomic) NSArray *segmentedControlTitles; +@property (copy, readwrite, nonatomic) NSArray *segmentedControlImages; @property (copy, readwrite, nonatomic) void (^switchValueChangeHandler)(RESegmentedItem *item); -+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; -+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value; ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value; -- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; -- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value; +- (id)initWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; +- (id)initWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value; -+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; -+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value; ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value; -- (id)initWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; -- (id)initWithImages:(NSArray *)images value:(NSInteger)value; +- (id)initWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler; +- (id)initWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value; @end \ No newline at end of file diff --git a/RETableViewManager/Items/RESegmentedItem.m b/RETableViewManager/Items/RESegmentedItem.m index b65ed42..03a3e1e 100644 --- a/RETableViewManager/Items/RESegmentedItem.m +++ b/RETableViewManager/Items/RESegmentedItem.m @@ -28,56 +28,58 @@ @implementation RESegmentedItem -+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value { - return [[self alloc] initWithTitles:titles value:value]; + return [[self alloc] initWithTitle:title segmentedControlTitles:titles value:value]; } -+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler { - return [[self alloc] initWithTitles:titles value:value switchValueChangeHandler:switchValueChangeHandler]; + return [[self alloc] initWithTitle:title segmentedControlTitles:titles value:value switchValueChangeHandler:switchValueChangeHandler]; } -- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value +- (id)initWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value { - return [self initWithTitles:titles value:value switchValueChangeHandler:nil]; + return [self initWithTitle:title segmentedControlTitles:titles value:value switchValueChangeHandler:nil]; } -- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler +- (id)initWithTitle:(NSString *)title segmentedControlTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler { self = [super init]; if (!self) return nil; - self.titles = titles; + self.title = title; + self.segmentedControlTitles = titles; self.value = value; self.switchValueChangeHandler = switchValueChangeHandler; return self; } -+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value { - return [[self alloc] initWithImages:images value:value]; + return [[self alloc] initWithTitle:title segmentedControlImages:images value:value]; } -+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler ++ (instancetype)itemWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler { - return [[self alloc] initWithImages:images value:value switchValueChangeHandler:switchValueChangeHandler]; + return [[self alloc] initWithTitle:title segmentedControlImages:images value:value switchValueChangeHandler:switchValueChangeHandler]; } -- (id)initWithImages:(NSArray *)images value:(NSInteger)value +- (id)initWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value { - return [self initWithImages:images value:value switchValueChangeHandler:nil]; + return [self initWithTitle:title segmentedControlImages:images value:value switchValueChangeHandler:nil]; } -- (id)initWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler +- (id)initWithTitle:(NSString *)title segmentedControlImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentedItem *item))switchValueChangeHandler { self = [super init]; if (!self) return nil; - self.images = images; + self.title = title; + self.segmentedControlImages = images; self.value = value; self.switchValueChangeHandler = switchValueChangeHandler; diff --git a/RETableViewManagerExample/RETableViewManagerExample/Classes/Controllers/ControlsViewController.m b/RETableViewManagerExample/RETableViewManagerExample/Classes/Controllers/ControlsViewController.m index 6978151..d8a4993 100644 --- a/RETableViewManagerExample/RETableViewManagerExample/Classes/Controllers/ControlsViewController.m +++ b/RETableViewManagerExample/RETableViewManagerExample/Classes/Controllers/ControlsViewController.m @@ -87,7 +87,7 @@ [section addItem:@"Simple NSString"]; self.fullLengthFieldItem = [RETextItem itemWithTitle:nil value:nil placeholder:@"Full length text field"]; - self.textItem = [RETextItem itemWithTitle:@"Text item" value:nil placeholder:@"Text"]; + self.textItem = [RETextItem itemWithTitle:@"Text item 123123" value:nil placeholder:@"Text"]; self.numberItem = [RENumberItem itemWithTitle:@"Phone" value:@"" placeholder:@"(123) 456-7890" format:@"(XXX) XXX-XXXX"]; self.numberItem.onEndEditing = ^(RENumberItem *item){ NSLog(@"Value: %@", item.value); @@ -97,10 +97,10 @@ self.boolItem = [REBoolItem itemWithTitle:@"Bool item" value:YES switchValueChangeHandler:^(REBoolItem *item) { NSLog(@"Value: %@", item.value ? @"YES" : @"NO"); }]; - self.segmentItem = [RESegmentedItem itemWithTitles:@[@"One", @"Two"] value:1 switchValueChangeHandler:^(RESegmentedItem *item) { + self.segmentItem = [RESegmentedItem itemWithTitle:@"Segmented=" segmentedControlTitles:@[@"One", @"Two"] value:1 switchValueChangeHandler:^(RESegmentedItem *item) { NSLog(@"Value: %i", item.value); }]; - self.segmentItem2 = [RESegmentedItem itemWithImages:@[[UIImage imageNamed:@"Heart"], [UIImage imageNamed:@"Heart_Highlighted"]] value:0 switchValueChangeHandler:^(RESegmentedItem *item) { + self.segmentItem2 = [RESegmentedItem itemWithTitle:nil segmentedControlImages:@[[UIImage imageNamed:@"Heart"], [UIImage imageNamed:@"Heart_Highlighted"]] value:0 switchValueChangeHandler:^(RESegmentedItem *item) { NSLog(@"Value: %i", item.value); }]; self.floatItem = [REFloatItem itemWithTitle:@"Float item" value:0.3 sliderValueChangeHandler:^(REFloatItem *item) {