如果另一个的值发生变化,我试图动态地向我的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
我们会提出任何建议。
答案 0 :(得分:0)
我想你想要显示"时间"只有在"之后" row的值为1,对吧? 在XLForm 3.0版中可以更轻松地解决这个问题。在该版本中,每行都有一个隐藏属性,因此如果在定义表单时将其设置为这样,它应该可以工作:
row = [XLFormRowDescriptor formRowDescriptorWithTag:@"time" rowType:XLFormRowDescriptorTypeDateTimeInline title:@"Date and time"];
row.hidden = [NSString stringWithFormat:@"$later != 1",];
您应该预先定义此行,而不必自行添加和删除。