XLForm如何添加两个BooleanCheck导入互斥关系
Posted
技术标签:
【中文标题】XLForm如何添加两个BooleanCheck导入互斥关系【英文标题】:how can XLForm add two BooleanCheck importing mutex relationship 【发布时间】:2016-04-04 14:58:22 【问题描述】:我在表单中添加了两个 BooleanCheck(A 和 B)。
我希望表单可以做到这一点 当我单击 A 时,它的值为 YES; 然后我点击 B。B 值为 YES,A 为 NO。
简单地说,它们中只有一个可以被isChecked
-(void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)rowDescriptor oldValue:(id)oldValue newValue:(id)newValue
// super implmentation MUST be called
[super formRowDescriptorValueHasChanged:rowDescriptor oldValue:oldValue newValue:newValue];
if ([rowDescriptor.tag isEqualToString:@"aCheck"])
if(aCheck.value==YES)
bCheck.value = NO;
else if ([rowDescriptor.tag isEqualToString:@"bCheck"])
if(bCheck.value==YES)
aCheck.value = NO;
【问题讨论】:
【参考方案1】:我不确定你的 aCheck 和 bCheck 是什么,但想法是在更改受影响的 rowDescriptors 的值后重新加载 tableview 或行
-(void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)rowDescriptor oldValue:(id)oldValue newValue:(id)newValue
// super implmentation MUST be called
[super formRowDescriptorValueHasChanged:rowDescriptor oldValue:oldValue newValue:newValue];
if ([rowDescriptor.tag isEqualToString:@"aCheck"])
if(aCheck.value==YES)
bCheck.value = NO;
else if ([rowDescriptor.tag isEqualToString:@"bCheck"])
if(bCheck.value==YES)
aCheck.value = NO;
//
// The idea is to reloadData or reload indexPaths
//
XLFormRowDescriptor *rowA = [self.form formRowWithTag:@"aCheck"];
XLFormRowDescriptor *rowB = [self.form formRowWithTag:@"bCheck"];
NSIndexPath *ipA = [self.form indexPathOfFormRow:rowA];
NSIndexPath *ipB = [self.form indexPathOfFormRow:rowB];
[self.tableView reloadRowsAtIndexPaths:@[ipA,ipB] withRowAnimation:UITableViewRowAnimationNone];
【讨论】:
以上是关于XLForm如何添加两个BooleanCheck导入互斥关系的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 XLForm 禁用的行文本颜色 [XLFormRowDescriptorTypeText]