Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 55 additions & 41 deletions XLForm/XL/Cell/XLFormSelectorCell.m
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,33 @@ -(NSString *)valueDisplayText
}
}
NSMutableArray * descriptionArray = [NSMutableArray arrayWithCapacity:[self.rowDescriptor.value count]];
for (id option in self.rowDescriptor.selectorOptions) {
NSArray * selectedValues = self.rowDescriptor.value;
if ([selectedValues formIndexForItem:option] != NSNotFound){
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * tranformedValue = [valueTransformer transformedValue:option];
if (tranformedValue){
[descriptionArray addObject:tranformedValue];
//add by OE Ex: value taken form the lacal cache but selectorOptions in the networking
if (self.rowDescriptor.selectorOptions.count>0){

for (id option in self.rowDescriptor.selectorOptions) {
NSArray * selectedValues = self.rowDescriptor.value;
if ([selectedValues formIndexForItem:option] != NSNotFound){
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * tranformedValue = [valueTransformer transformedValue:option];
if (tranformedValue){
[descriptionArray addObject:tranformedValue];
}
}
else{
[descriptionArray addObject:[option displayText]];
}
}
else{
[descriptionArray addObject:[option displayText]];
}
}else{
for (id option in self.rowDescriptor.value) {
if ([option isKindOfClass:[XLFormOptionsObject class]]) {
XLFormOptionsObject *newOption = (XLFormOptionsObject*)option;
[descriptionArray addObject:newOption.formDisplayText];
}
else {
[descriptionArray addObject:[NSString stringWithFormat:@"%@",option]];
}
}
}
Expand Down Expand Up @@ -166,7 +180,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
UIViewController<XLFormRowDescriptorViewController> *selectorViewController = (UIViewController<XLFormRowDescriptorViewController> *)controllerToPresent;
selectorViewController.rowDescriptor = self.rowDescriptor;
selectorViewController.title = self.rowDescriptor.selectorTitle;

if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeSelectorPopover]) {
if (self.popoverController && self.popoverController.popoverVisible) {
[self.popoverController dismissPopoverAnimated:NO];
Expand All @@ -192,9 +206,9 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
XLFormOptionsViewController * optionsViewController = [[XLFormOptionsViewController alloc] initWithStyle:UITableViewStyleGrouped titleHeaderSection:nil titleFooterSection:nil];
optionsViewController.rowDescriptor = self.rowDescriptor;
optionsViewController.title = self.rowDescriptor.selectorTitle;

if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeSelectorPopover]) {
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:optionsViewController];
if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeSelectorPopover]) {
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:optionsViewController];
self.popoverController.delegate = self;
optionsViewController.popoverController = self.popoverController;
if (self.detailTextLabel.window){
Expand All @@ -204,9 +218,9 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
[self.popoverController presentPopoverFromRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) inView:self permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
[controller.tableView deselectRowAtIndexPath:[controller.tableView indexPathForCell:self] animated:YES];
} else {
[controller.navigationController pushViewController:optionsViewController animated:YES];
}
} else {
[controller.navigationController pushViewController:optionsViewController animated:YES];
}
}
}
else if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeMultipleSelector] || [self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeMultipleSelectorPopover])
Expand All @@ -221,7 +235,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
}
optionsViewController.rowDescriptor = self.rowDescriptor;
optionsViewController.title = self.rowDescriptor.selectorTitle;

if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeMultipleSelectorPopover]) {
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:optionsViewController];
self.popoverController.delegate = self;
Expand All @@ -238,8 +252,8 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
}
}
else if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeSelectorActionSheet]){


#if __IPHONE_OS_VERSION_MAX_ALLOWED < 80000
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:self.rowDescriptor.selectorTitle
delegate:self
Expand All @@ -266,15 +280,15 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
alertController.popoverPresentationController.sourceRect = [formViewController.tableView convertRect:v.frame fromView:self];
__weak __typeof(self)weakSelf = self;
for (id option in self.rowDescriptor.selectorOptions) {
NSString *optionTitle = [option displayText];
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * transformedValue = [valueTransformer transformedValue:[option valueData]];
if (transformedValue) {
optionTitle = transformedValue;
}
}
NSString *optionTitle = [option displayText];
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * transformedValue = [valueTransformer transformedValue:[option valueData]];
if (transformedValue) {
optionTitle = transformedValue;
}
}
[alertController addAction:[UIAlertAction actionWithTitle:optionTitle
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
Expand Down Expand Up @@ -303,7 +317,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
[controller.tableView deselectRowAtIndexPath:[controller.form indexPathOfFormRow:self.rowDescriptor] animated:YES];
}
else if ([self.rowDescriptor.rowType isEqualToString:XLFormRowDescriptorTypeSelectorAlertView]){

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 80000
UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:self.rowDescriptor.selectorTitle
message:nil
Expand Down Expand Up @@ -334,7 +348,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c
style:UIAlertActionStyleCancel
handler:nil]];
[controller presentViewController:alertController animated:YES completion:nil];

}
#ifndef XL_APP_EXTENSIONS
else{
Expand Down Expand Up @@ -417,15 +431,15 @@ - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)butto

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * tranformedValue = [valueTransformer transformedValue:[[self.rowDescriptor.selectorOptions objectAtIndex:row] valueData]];
if (tranformedValue){
return tranformedValue;
}
}
return [[self.rowDescriptor.selectorOptions objectAtIndex:row] displayText];
if (self.rowDescriptor.valueTransformer){
NSAssert([self.rowDescriptor.valueTransformer isSubclassOfClass:[NSValueTransformer class]], @"valueTransformer is not a subclass of NSValueTransformer");
NSValueTransformer * valueTransformer = [self.rowDescriptor.valueTransformer new];
NSString * tranformedValue = [valueTransformer transformedValue:[[self.rowDescriptor.selectorOptions objectAtIndex:row] valueData]];
if (tranformedValue){
return tranformedValue;
}
}
return [[self.rowDescriptor.selectorOptions objectAtIndex:row] displayText];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
Expand Down