Apple 开发人员文档中未找到必需的 NSSlider 方法 (sliderDidMove) 声明

发布于 2025-01-07 09:41:11 字数 380 浏览 0 评论 0原文

使用 NSSlider 编写教程。

我想要的:移动滑块将在 NSTextField 中显示滑块值。

教程解释了以下方法将在文本字段中显示滑块值:

- (IBAction)sliderDidMove:(id)sender {
    NSSlider *slider = sender;
    double value = [slider doubleValue];
    [sliderValueLabel setDoubleValue:value];    
}

方法不起作用,所以我尝试在苹果开发者网站上找到方法声明 但找不到它。从我的理解是方法:sliderDidMove一个类方法 来自 NSSlider 类,为什么我找不到任何文档?

Working on a tutorial with a NSSlider.

What I want: Moving the slider will show slider value in NSTextField.

Tutorial explains that following method will show slider value in text field:

- (IBAction)sliderDidMove:(id)sender {
    NSSlider *slider = sender;
    double value = [slider doubleValue];
    [sliderValueLabel setDoubleValue:value];    
}

Method does not work so I tried to find the method declaration on Apples developer website
but couldn't find it. From my understanding is the method: sliderDidMove a class method
from the class NSSlider so why I'm unable to find any documentation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰魂雪魄 2025-01-14 09:41:11

当滑块值更改时,它会将 -[NSControl action] 发送到其 -[NSControl target]。因此,在 Interface Builder 中,您需要按住 Ctrl 键并从滑块拖动到具有 sliderDidMove: 的对象(该对象可能是应用程序委托或文件所有者)。该名称由教程作者选择,可以是其他名称。

或者,您可以通过编程方式进行设置:

[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];

另请注意,通过绑定可以更好地解决此特定任务:将滑块和标签的值绑定到某个对象的 double 属性,Cocoa 将使它们保持同步。

When slider value changes, it sends -[NSControl action] to its -[NSControl target]. So in Interface Builder you need to Ctrl-drag from the slider to the object that has sliderDidMove: (that will probably be either App Delegate or File's Owner). The name is chosen by the tutorial's author, it can be anything else.

Alternatively, you can set it up programmatically:

[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];

Note also that this particular task is better solved with bindings: bind both slider's and label's value to a double property of some object, and Cocoa will keep them synchronized.

月隐月明月朦胧 2025-01-14 09:41:11

在 Swift 中 ...

 // Somewhere maybe in viewDidLoad ...
        slider.target = self
        slider.action = #selector(sliderDidMove)



// Later on..

func sliderDidMove(){
    print("The slider moved!")
}

In Swift ...

 // Somewhere maybe in viewDidLoad ...
        slider.target = self
        slider.action = #selector(sliderDidMove)



// Later on..

func sliderDidMove(){
    print("The slider moved!")
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文