我的问题是我的屏幕上有很多 UITextField 和类,其中在 UITextField 中输入的所有数据都存储在我的 xyz 类中。现在,我正在使用 switch case 将我的 UITextField 映射到类属性,这非常可怕,更不用说增加了复杂性的验证。有什么方法可以将类属性与 UITextField 映射并摆脱开关盒,请帮忙。
问问题
309 次
2 回答
1
给每个文本字段一个从 0 到 n 的标签。然后,您可以使用数组将视图标签映射到插座属性名称,例如:
@interface MyClass
@property ( nonatomic, retain ) id property1 ;
@property ( nonatomic, retain ) id property2 ;
@property ( nonatomic, retain ) id property3 ;
@end
然后在您的-(void)textFieldDidChangeText:(NSNotification*)note
(或您处理文本字段更改的任何地方)方法中执行以下操作:
static NSString * fieldNames[] = { @"property1", @"property2", @"property3" } ;
UITextField * field = [ note object ] ;
[ self setValue:field.text forKey:fieldNames[ field.tag ] ] ;
也许其他人可以提出更可靠的解决方案。高温高压
于 2011-05-13T08:14:11.953 回答
1
您可以考虑一个采用UITextFieldDelegate
协议并包含字符串的类。
@interface XXBoundString: NSObject <UITextFieldDelegate> {
NSString *string;
... // Other necessary ivars
}
... // string methods that you want exposed
@end
这样你就可以把所有的代码放在这个对象中。如果每个文本字段的验证方法不同,您可以接受代码作为块对象。
-(void)setValidationBlock:(ValidationBlock)block;
在这里,您将NSString
s替换为XXBoundString
对象,并将它们中的每一个设置为特定 UITextField 的委托。
于 2011-05-13T09:49:06.690 回答