【问题标题】:Required NSSlider method (sliderDidMove) declaration not found on Apple's Developer Documentation在 Apple 的开发人员文档中找不到所需的 NSSlider 方法 (sliderDidMove) 声明
【发布时间】:2012-02-19 15:06:24
【问题描述】:

使用 NSSlider 编写教程。

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

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

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

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

【问题讨论】:

标签: objective-c xcode nsslider


【解决方案1】:

当滑块值改变时,它会将-[NSControl action] 发送到它的-[NSControl target]。因此,在 Interface Builder 中,您需要按住 Ctrl 键从滑块拖动到具有 sliderDidMove: 的对象(可能是 App Delegate 或 File's Owner)。名称由教程的作者选择,可以是其他任何名称。

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

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

还要注意,这个特殊任务最好通过绑定来解决:将滑块和标签的值绑定到某个对象的 double 属性,Cocoa 将使它们保持同步。

【讨论】:

    【解决方案2】:

    Swift ...

     // Somewhere maybe in viewDidLoad ...
            slider.target = self
            slider.action = #selector(sliderDidMove)
    
    
    
    // Later on..
    
    func sliderDidMove(){
        print("The slider moved!")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多