Objective c 使用NSSlider设置隐藏不';t工作-目标C
嘿,伙计们,我是ObjC的新手,我还在学习; [sliderContrast setHidden:YES](我还使用了slider.hidden=YES)不会使滑块不可见,相反,它可以很好地处理文本字段。你知道为什么吗? 我也尝试过使用属性和合成,但结果没有改变 ---接口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
@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,即连接插座的位置。