Objective c 如何设置NSLevelIndicatorCell值?

Objective c 如何设置NSLevelIndicatorCell值?,objective-c,cocoa,Objective C,Cocoa,我有一个桌面视图。tableview中的一列使用NSLevelIndicatorCell 我希望能够允许用户编辑级别指示器的警告值和临界值,以便当用户在“警告级别”文本框中输入值时,更改所有tableview行中显示的级别指示器的警告值 我是Objective-C的新手,所以到目前为止我所能想到的是,我必须需要一个委托方法来监视文本框,但如果我成功地做到了这一点,我到底应该如何将新值发送到特定的tableview列,以便对所有行进行更新(即,如何将什么消息发送到tableview并以tablev

我有一个桌面视图。tableview中的一列使用NSLevelIndicatorCell

我希望能够允许用户编辑级别指示器的警告值和临界值,以便当用户在“警告级别”文本框中输入值时,更改所有tableview行中显示的级别指示器的警告值

我是Objective-C的新手,所以到目前为止我所能想到的是,我必须需要一个委托方法来监视文本框,但如果我成功地做到了这一点,我到底应该如何将新值发送到特定的tableview列,以便对所有行进行更新(即,如何将什么消息发送到tableview并以tableview中的列中的单元格为目标)

这是我提出的解决方案的代码,如果有人需要它

- (IBAction)setWarningLevel:(id)sender {
    double v;
    NSScanner *ns = [NSScanner scannerWithString:[warnLevel stringValue]];
    [ns scanDouble:&v];
    [levelIndicator setWarningValue:v];
}  

这是一个使用的教科书案例。只需将文本字段的值绑定到表视图中的
NSLevelIndicatorCell
(在Interface Builder中执行)。更新应自动进行


我认为,如果将绑定应用于IB中的单元格,它应该适用于表视图中的所有单元格。但是,如果不适用,则需要编写几行代码,以便在每次创建表中的新行时设置绑定。上面的链接将详细解释所有内容,但基本上您将设置一个键值Obs文本字段和正在创建的行中的级别指示器实例之间的服务器代码关系。

这是一个使用的教科书案例。只需将文本字段的值绑定到表视图中的
NSLevelIndicatorCell
(在Interface Builder中执行)。更新应自动进行


我认为,如果将绑定应用于IB中的单元格,它应该适用于表视图中的所有单元格。但是,如果不适用,则需要编写几行代码,以便在每次创建表中的新行时设置绑定。上面的链接将详细解释所有内容,但基本上您将设置一个键值Obs正在创建的行中,文本字段和级别指示器实例之间的代码中的服务器关系。

我认为您可能做得过火了

NSTextField是NSControl的子类,因此您需要在文档中查找NSControl的有用函数

尝试这样重新编写;假设您从warnLevel文本字段获取值

- (IBAction)setWarningLevel:(id)sender {
    double v = [warnLevel doubleValue];
    [levelIndicator setWarningValue:v];
}
虽然这通常是缩短到这个

- (IBAction)setWarningLevel:(id)sender {
    [levelIndicator setWarningValue:[warnLevel doubleValue]];
}
您可能需要验证textfield是否有一个有效的数字。如果您只选择了几个数字,请查看使用步进控制

通常,对于可可,如果你觉得自己跳过了太多的障碍,有一种更简单的方法


通常;-)

我想你可能做得太过分了

NSTextField是NSControl的子类,因此您需要在文档中查找NSControl的有用函数

试着像这样重写它;假设您从warnLevel文本字段中获取值

- (IBAction)setWarningLevel:(id)sender {
    double v = [warnLevel doubleValue];
    [levelIndicator setWarningValue:v];
}
虽然这通常是缩短到这个

- (IBAction)setWarningLevel:(id)sender {
    [levelIndicator setWarningValue:[warnLevel doubleValue]];
}
您可能需要验证textfield是否有有效的数字。如果你只选择了几个数字,看看如何使用步进控制

通常,对于可可,如果你觉得自己跳过了太多的障碍,有一种更简单的方法


通常;-)

谢谢你的快速帮助。在我等待答复的过程中,我成功地自己找到了答案(我仍然对自己的答案感到震惊——我只编写了Objective-C两天)。是的,它会自动应用于所有行!以下是我的解决方案(以防对任何人有所帮助):-(iAction)设置警告级别:(id)发送方{double v;NSScanner*ns=[NSScanner scannerWithString:[warnLevel stringValue]];[ns scanDouble:&v];[levelIndicator设置警告值:v];}嘿,您可能希望将您的解决方案添加到问题本身,因为没有人可以阅读您在注释中输入的未格式化的混乱代码。=)谢谢你的快速帮助。在我等待答复的过程中,我成功地自己找到了答案(我仍然对自己的答案感到震惊——我只编写了Objective-C两天)。是的,它会自动应用于所有行!以下是我的解决方案(以防对任何人有所帮助):-(iAction)设置警告级别:(id)发送方{double v;NSScanner*ns=[NSScanner scannerWithString:[warnLevel stringValue]];[ns scanDouble:&v];[levelIndicator设置警告值:v];}嘿,您可能希望将您的解决方案添加到问题本身,因为没有人可以阅读您在注释中输入的未格式化的混乱代码。=)可能有点多-看一看我的答案以获得更简单的方法。可能有点多-看一看我的答案以获得更简单的方法。谢谢!这绝对是一个进步。我仍然在学习Objective-C(我上周日才开始使用它),学习一种新语言中的可用内容总是一件很烦人的事情(例如,我知道我想做什么,我知道如何用C、Pascal或PHP来做,但Objective-C到底叫什么?)。我最终会到达那里的!!谢谢这绝对是一个进步。我仍然在学习Objective-C(我上周日才开始使用它),学习一种新语言中的可用内容总是一件很烦人的事情(例如,我知道我想做什么,我知道如何用C、Pascal或PHP来做,但Objective-C到底叫什么?)。我最终会到达那里的!!