プロジェクトでXLFormを使用しており、行の 1 つの値を特定の形式で表示したいと考えています。
行は「年間売上高」であり、ユーザーが入力した値を通貨として表示したい - たとえば、ユーザーがフォーム フィールドに1000000を入力した場合、フィールドを更新して次のように表示する必要があります: $ 1,000,000.00
それ、どうやったら出来るの?
これは、initializeForm() でフォーム フィールドを初期化する方法です。
-(void)initializeForm
{
// Other fields in the form...
// Annual turnover Section
self.section = [XLFormSectionDescriptor formSectionWithTitle:formLabel8AnnualTurnover];
//section.footerTitle = @"Describe new products";
[self.formDescriptor addFormSection:self.section];
// Annual turnover
self.row = [XLFormRowDescriptor formRowDescriptorWithTag:formField8AnnualTurnover rowType:XLFormRowDescriptorTypeText title:nil];
self.row.required = NO;
rowDescriptor8AnnualTurnover = self.row;
[self.section addFormRow:self.row];
// Other fields in the form...
self.form = self.formDescriptor;
}
ドキュメントによると、ユーザーがフィールドを操作したことをキャッチし、フィールドの値を変更して行を更新する必要があります。
これは、ユーザーがフィールドに何かを入力したことをキャッチする方法です。
-(void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)rowDescriptor oldValue:(id)oldValue newValue:(id)newValue
{
[super formRowDescriptorValueHasChanged:rowDescriptor oldValue:oldValue newValue:newValue];
// Get the current form values
formValues = [self.form formValues];
int i = 0;
if ([rowDescriptor.tag hasPrefix:formField8AnnualTurnover]){
NSString *annualTurnoverValue = [(XLFormOptionsObject*)formValues[formField8AnnualTurnover] displayText];
rowDescriptor8AnnualTurnover.value = [NSString stringWithFormat:@"R %@", annualTurnoverValue]; //This breaks.
[self reloadFormRow:rowDescriptor8AnnualTurnover];
}
}