首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何格式化XLForm行值

如何格式化XLForm行值
EN

Stack Overflow用户
提问于 2015-10-14 12:54:55
回答 1查看 797关注 0票数 1

我在项目中使用XLForm,希望以特定格式显示其中一行的值。

行为“年度营业额”,我希望显示用户以货币形式输入的值--例如,如果用户将1000000输入表单字段,则应更新该字段以显示如下:$ 1,000,000.00

我该怎么做?

这就是在initializeForm()中初始化表单字段的方式:

代码语言:javascript
复制
-(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;

}

根据文献资料,我应该捕捉到用户已经与字段进行交互,然后更改字段的值并更新行。

这就是我如何捕捉到用户已经在字段中输入了一些内容:

代码语言:javascript
复制
-(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];
            }    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 08:33:24

通过重置rowDescriptorformRowDescriptorValueHasChanged中的值,正在创建一个无穷无尽的循环。

我解决了这个问题,将formRowDescriptorValueHasChanged更改为首先检查rowDescriptor的值是否已经以货币符号开头,只有在缺少时才添加它:

代码语言:javascript
复制
-(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];
   if ([rowDescriptor.tag hasPrefix:formField8AnnualTurnover]){
        NSString *annualTurnoverValue = [(XLFormOptionsObject*)formValues[formField8AnnualTurnover] displayText];
        if([annualTurnoverValue hasPrefix:@"R "]){
            // Do nothing - the value will simply be increased.
        }else{
            rowDescriptor8AnnualTurnover.value = [NSString stringWithFormat:@"R %@", annualTurnoverValue];
            [self reloadFormRow:rowDescriptor8AnnualTurnover];
        }            
    }    
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33125909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档