没有使用addRow:afterRow:方法将行添加到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

任何建议都会被强烈建议。

我想只有当"later"行的值为1时,您才想显示"time"行,对吧?这个问题可以在XLForm的3.0版本中更容易地解决。在这个版本中,每一行都有一个隐藏属性,所以如果你在定义表单时这样设置它,它应该可以工作:

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

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

相关内容

  • 没有找到相关文章

最新更新