我有两个NSTextfield,我想对每个使用相同的方法:
-(void)controlTextDidChange: (id)sender {
[label setStringValue:[textfield stringValue]];
}
我想使用不同的label/textfield
对,具体取决于NSTextField发送的消息。这些信息是否在sender
对象中可用,还是我必须创建新的委托?
答案 0 :(得分:2)
[sender object]
是您的textfield
,因此轻松获取stringValue
。但是,获取相关标签不是:您需要构建自己的方案才能找到它。
一种方法是通过将tag
属性设置为不同的数字来标记文本字段。如果将第一个标签的文本字段标记设置为1,将第二个标签的文本字段标记设置为2,则可以执行以下操作:
-(void)controlTextDidChange: (id)sender {
NSTextField *textfield = [sender object];
NSLabel *label = nil;
switch ([textfield tag]) {
case 1: label = myLabelOne; break;
case 2: label = myLabelTwo; break;
}
[label setStringValue:[textfield stringValue]];
}
答案 1 :(得分:1)
以下是我解决它的方法:
-(void)controlTextDidChange: (id)sender {
[[[window contentView]
viewWithTag:( [[sender object] tag] + 100 )]
setStringValue:[ [sender object] stringValue]];
我在接口构建器中将标签的标记设置为值:100 +关联的NSTextField的标记。 IBOutlet也不需要。