1

我有两个 NSTextfield,我想对每个使用相同的方法:

-(void)controlTextDidChange: (id)sender {
[label setStringValue:[textfield stringValue]];
}

我想使用不同的label/textfield一对,具体取决于哪个 NSTextField 发送消息。这些信息在sender对象中是否可用,还是我必须创建一个新的委托?

4

2 回答 2

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]];
}
于 2012-07-19T11:04:56.863 回答
1

这是我解决它的方法:

-(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.

于 2012-07-19T11:56:27.467 回答