我有两个 NSTextfield,我想对每个使用相同的方法:
-(void)controlTextDidChange: (id)sender {
[label setStringValue:[textfield stringValue]];
}
我想使用不同的label/textfield
一对,具体取决于哪个 NSTextField 发送消息。这些信息在sender
对象中是否可用,还是我必须创建一个新的委托?
我有两个 NSTextfield,我想对每个使用相同的方法:
-(void)controlTextDidChange: (id)sender {
[label setStringValue:[textfield stringValue]];
}
我想使用不同的label/textfield
一对,具体取决于哪个 NSTextField 发送消息。这些信息在sender
对象中是否可用,还是我必须创建一个新的委托?
这[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]];
}
这是我解决它的方法:
-(void)controlTextDidChange: (id)sender {
[[[window contentView]
viewWithTag:( [[sender object] tag] + 100 )]
setStringValue:[ [sender object] stringValue]];
I set in interface builder the tag of the labels to a value of: 100 + the tag of the associated NSTextField. There is also no need for IBOutlet.