我正在使用内联datePicker来选择日期(dd / mm / yyyy)。这是一个生日,如果日期小于[NSDate date]减去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行)
其中: 自我是实际的行, _hidden等于“$ birthday.value> = CAST(881190000.000000,”NSDate“)” 和self.sectionDescriptor.formDescriptor.allRowsByTag为零,因为self.sectionDescriptor也是零
以下是@catch块中的NSException描述:
无法在绑定{}中获取'birthday'的值。
感谢您的帮助\ o
答案 0 :(得分:2)
通过绕过问题,我找到了一个能够完成这项工作的解决方案。
我重写了方法
- [id<XLFormDescriptorDelegate> formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue];
因此,当行的值发生变化时,我会收到通知。我只是在这里进行比较,根据结果隐藏或显示我想要的行。
如果有人遇到同样的问题,我认为这个解决方案很棒,设置时间并不昂贵(不需要NSPredicate和正则表达式技能,只需要一种方法来覆盖),而且不是很脏(代码可读,并且解决方案不是一个大技巧):))