4

我开始为 iOS 使用非常出色的 XLForm 项目 ( https://github.com/xmartlabs/XLForm ),但是我遇到了一些可能很容易回答但我无法弄清楚的问题。

我想检测一行值的变化——例如文本字段或分段控件。我需要实施什么方法来捕捉这种变化?我猜它来自控件本身,但由于 XLForm 管理控件,我不清楚如何获得它。

非常感谢!

4

4 回答 4

5
-(void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue{

}
于 2015-05-25T09:50:53.953 回答
2

正如 Github 所指出的那样,这是如何做到的:

https://github.com/xmartlabs/XLForm#dynamic-forms---how-to-change-the-form-dynamically-at-runtime

于 2014-08-14T19:58:20.560 回答
2

别忘了打电话给

[super formRowDescriptorValueHasChanged:oldValue:newValue]

这是上面的示例

-(void)formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue
{
    // super implementation MUST be called
    [super formRowDescriptorValueHasChanged:formRow oldValue:oldValue newValue:newValue];

    if ([formRow.tag isEqualToString:@"alert"]){
        if ([[oldValue valueData] isEqualToNumber:@(0)] == NO && [[newValue valueData] isEqualToNumber:@(0)]){
            [self.form removeFormRow:formRow];
        }
    }
}
于 2015-10-13T12:42:58.390 回答
0

对于斯威夫特:

override func formRowDescriptorValueHasChanged(formRow: XLFormRowDescriptor!, oldValue: AnyObject!, newValue: AnyObject!) {

print("changed!")

}
于 2017-02-13T09:15:01.270 回答