Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何格式化XLForm行值_Ios_Objective C_Xlform - Fatal编程技术网

Ios 如何格式化XLForm行值

Ios 如何格式化XLForm行值,ios,objective-c,xlform,Ios,Objective C,Xlform,我正在项目中使用,希望以特定格式显示其中一行的值 该行是“年营业额”,我想显示用户以货币形式输入的值-例如,如果用户在表单字段中输入1000000,则应更新该字段以显示以下内容:$1000000.00 我该怎么做 这是在initializeForm()中初始化表单字段的方式: 根据,我应该发现用户已经与字段进行了交互,然后更改字段的值并更新行 这就是我发现用户已在字段中输入内容的方式: -(void)formRowDescriptorValueHasChanged:(XLFormRowDescr

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

该行是“年营业额”,我想显示用户以货币形式输入的值-例如,如果用户在表单字段中输入1000000,则应更新该字段以显示以下内容:$1000000.00

我该怎么做

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

根据,我应该发现用户已经与字段进行了交互,然后更改字段的值并更新行

这就是我发现用户已在字段中输入内容的方式:

-(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];
            }    
}

通过重置
formRowDescriptorValueHasChanged
rowDescriptor
的值,创建了一个无休止的循环

我通过更改
formRowDescriptorValueHasChanged
来解决此问题,首先检查
rowDescriptor
的值是否已以货币符号开头,并且仅在缺少货币符号时添加:

-(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];
        }            
    }    
}

formRowDescriptorValueHasChanged
有效吗?它告诉您哪些rowDescriptor发生了更改,因此基于此,您可以做一些事情。我用它根据一行的选择来隐藏/显示另一行。是的。我知道。我是说你的代码很好用<代码>行描述符R8AnnualTurnover.value=[NSString stringWithFormat:@“R%@”,annualTurnoverValue]//这就中断了。在重新加载FormRow之后,您如何将此行重新分配为第一响应者:?我不再做iOS开发了-希望其他人能帮助您。
-(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];
        }            
    }    
}