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导入互斥关系的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的 XLForm 验证

如何更改 XLForm 禁用的行文本颜色 [XLFormRowDescriptorTypeText]

XLForm 目标-C |未知的属性属性“可为空”

如何将 NSPredicate 应用于自定义 XLForm 行?

XLForm 检测行值的变化

XLForm Cell numberOfLines