0

如果另一个值发生变化,我正在尝试向我的 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

任何建议都会被大大建议。

4

1 回答 1

0

我猜您只想在“稍后”行的值为 1 时才显示“时间”行,对吧?这个问题在 XLForm 3.0 版本中可以更容易地解决。在该版本中,每行都有一个隐藏属性,因此如果在定义表单时像这样设置它,它应该可以工作:

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

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

于 2015-04-24T13:09:53.853 回答