diff --git a/XLForm/XL/Cell/XLFormSelectorCell.m b/XLForm/XL/Cell/XLFormSelectorCell.m index edc9112c..ff0eaff7 100644 --- a/XLForm/XL/Cell/XLFormSelectorCell.m +++ b/XLForm/XL/Cell/XLFormSelectorCell.m @@ -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]]; } } } @@ -166,7 +180,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c UIViewController *selectorViewController = (UIViewController *)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]; @@ -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){ @@ -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]) @@ -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; @@ -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 @@ -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) { @@ -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 @@ -334,7 +348,7 @@ -(void)formDescriptorCellDidSelectedWithFormController:(XLFormViewController *)c style:UIAlertActionStyleCancel handler:nil]]; [controller presentViewController:alertController animated:YES completion:nil]; - + } #ifndef XL_APP_EXTENSIONS else{ @@ -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