使用addRow:afterRow:方法不会将行添加到xlform

时间:2015-02-26 00:49:33

标签: objective-c xlform

如果另一个的值发生变化,我试图动态地向我的XLForm添加一行。我记录了第一行的值,一切正常,但没有添加行。我已经乱了好几个小时而没有运气。

这是我的代码:

- (void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)rowDescriptor oldValue:(id)oldValue newValue:(id)newValue
{
    [super formRowDescriptorValueHasChanged:rowDescriptor oldValue:oldValue newValue:newValue];

    if ([rowDescriptor.tag isEqualToString:@"later"]){
      if ([[newValue valueData] isEqualToNumber:@(1)] == YES){
          NSLog(@"NEW VALUE %@", [newValue valueData]);
                                                 rowType:XLFormRowDescriptorTypeDateTimeInline
        XLFormRowDescriptor *n = [XLFormRowDescriptor formRowDescriptorWithTag:@"time"
                                                                       rowType:XLFormRowDescriptorTypeDateTimeInline
                                                                         title:@"Date and Time"];

        [self.formO addFormRow:n afterRow:rowDescriptor];
    }
    else if ([[newValue valueData] isEqualToNumber:@(0)] == NO){
        [self.form removeFormRowWithTag:@"time"];
        NSLog(@"NEW VALUE %@", [newValue valueData]);

    }
}
}

这是框架 http://cocoadocs.org/docsets/XLForm/2.1.0/Protocols/XLFormDescriptorCell.html

我们会提出任何建议。

1 个答案:

答案 0 :(得分:0)

我想你想要显示"时间"只有在"之后" row的值为1,对吧? 在XLForm 3.0版中可以更轻松地解决这个问题。在该版本中,每行都有一个隐藏属性,因此如果在定义表单时将其设置为这样,它应该可以工作:

row = [XLFormRowDescriptor formRowDescriptorWithTag:@"time" rowType:XLFormRowDescriptorTypeDateTimeInline title:@"Date and time"];
row.hidden = [NSString stringWithFormat:@"$later != 1",];

您应该预先定义此行,而不必自行添加和删除。