我使用内联datePicker来选择日期(dd/mm/yyyy)。这是一个生日,如果日期小于NSDate日期减去18年,我必须显示表单行。
我完全在为显示或隐藏行的谓词而挣扎:x
下面是用于设置用户不到18岁时需要隐藏的行的代码
XLFormRowDescriptor *row = [XLFormRowDescriptor formRowDescriptorWithTag:kAuthorization rowType:MyXLFormDescriptionTypeCheck title:@"Parents authorization"]];
row.hidden = [NSString stringWithFormat:@"$%@.value >= CAST(%f, 'NSDate')", kDateOfBirth, [eighteenYearsAgo timeIntervalSince1970]];
[section addFormRow:row];当我运行我的应用程序时,断点在XLFormRowDescriptor.m (第342行)处停止执行。
其中: self是实际行,_hidden等于"$birthday.value >= CAST(881190000.000000,"NSDate")“,而self.sectionDescriptor是零,因为self.sectionDescriptor也是零。
下面是@catch块中NSException的描述:
在绑定{}中无法获得“生日”的值。
谢谢你的帮助\o
发布于 2015-12-07 11:50:54
通过绕过问题,我找到了解决问题的办法。
我夸大了这种方法
- [id<XLFormDescriptorDelegate> formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue];这样,当行的值发生变化时,我就会得到通知。我只需在这里进行比较,并根据结果隐藏或显示我想要的行。
如果有人被困在同样的问题上,我认为这个解决方案很好,安装起来不费时间(不需要NSPredicate,也不需要regex技能,只需要一种重写方法),也不太脏(代码是可读的,解决方案不是什么大窍门):
https://stackoverflow.com/questions/34093058
复制相似问题