Objective c 使用NSSlider设置隐藏不';t工作-目标C

Objective c 使用NSSlider设置隐藏不';t工作-目标C,objective-c,cocoa,nsslider,Objective C,Cocoa,Nsslider,嘿,伙计们,我是ObjC的新手,我还在学习; [sliderContrast setHidden:YES](我还使用了slider.hidden=YES)不会使滑块不可见,相反,它可以很好地处理文本字段。你知道为什么吗? 我也尝试过使用属性和合成,但结果没有改变 ---接口 @interface Controller : NSWindowController{ IBOutlet NSTextField *labelContrast; IBOutlet NSTextField

嘿,伙计们,我是ObjC的新手,我还在学习; [sliderContrast setHidden:YES](我还使用了slider.hidden=YES)不会使滑块不可见,相反,它可以很好地处理文本字段。你知道为什么吗? 我也尝试过使用属性和合成,但结果没有改变

---接口

@interface Controller : NSWindowController{
 
    IBOutlet NSTextField *labelContrast;
    IBOutlet NSTextField *valueContrast;
    IBOutlet NSSlider *sliderContrast;
}
- (IBAction)changeContrast:(id)sender;

@end
---实施

#import "Controller.h"

@interface Controller ()

@end


@implementation Controller

- (void)windowDidLoad {

    [super windowDidLoad];

    [labelContrast setHidden:YES];

    [valueContrast setHidden:YES];

    [sliderContrast setHidden:YES];

}

- (IBAction)changeContrast:(id)sender {
}
@end

如果你为你的对象声明指针,但是你自己没有分配它们,你不能设置任何不存在的东西。您的
setHidden:
方法调用以本地void结束

以编程方式 如果您采用编码方式,您将首先声明、分配和启动。与

labelContrast = [NSTextField alloc] initWithFrame:NSMakeRect(x,y,w,h)];
在调用对象类的其他方法(或类似的init方法)之前。
之后,可以调用对象上的方法

几乎所有对象都继承一个相应的
-(instancetype)init
-(instancetype)initWith…
方法。如果没有给出
init
方法,那么有另一种方法可以正确地执行此操作,并且是重新开始阅读的时候:)

使用界面生成器 通过在声明前键入
IBOutlet
IBAction
,您只需向Xcodes Interface Builder提示在何处连接并应用于(nib、xib、storyboard)中放置的对象,并将其在XML方案中的对象ID与代码中的引用相关联


因此,在您将代码和IB中的对象连接起来之后,您可以避免为该特定对象分配和初始化进程。请注意,对尚未实例化的对象调用方法不起作用。这就是为什么您要在
-(void)windowDidLoad
,-
(void)viewDidLoad
-(void)awakeFromNib
中编码,因为这些方法是在“IB”为您完成任务后调用的。

插座连接好了吗?与在Objective-C中引发异常的Swift不同,什么都没有发生是的,我仔细检查了如果这是初始外观,我建议在Interface Builder中设置
隐藏
标志。具体如何?如果我在接口中设置了标志,那么xcode会在接口生成器中给我error,即连接插座的位置。