【问题标题】: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!")
}