NSButton setEnabled无法正常工作

时间:2010-11-20 01:30:15

标签: objective-c user-interface interface-builder nsbutton

我正在尝试启动一个应用程序,除了一个按钮,每个按钮都被禁用。首先,我尝试通过界面构建​​器将它们设置为禁用,然后在需要启用它们时将它们设置为启用。但是,当我调用setEnabled时:它实际上并没有启用它们(我甚至做了NSLogs来查看它是否到达那里!)。其次,我还尝试将它们初始化为代码中的禁用(在applicationDidFinishLaunching:方法内),然后再次将它们设置为启用,但仍然无效。当我需要它们时,是否有人建议尝试禁用/启用它们?

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
     [loadImageButton setEnabled:NO];
     [autoFitButton setEnabled:NO];
     [estimateAgeButton setEnabled:NO];
     [ageProgressButton setEnabled:NO];
}


- (IBAction)loadAAMModel:(id)sender
{
   ...
   ...
     if (waam.ModelLoaded) {
         [modelNameLabel setStringValue:f];
         [svmLabel setStringValue:svmPath];
         [ageTableLabel setStringValue:ageTable];
         NSLog(@"model loaded...set loadImageButton to Enabled!");
         [loadImageButton setEnabled:YES];
         NSLog(@"loadImageButton set to Enabled.");
    }
}

2 个答案:

答案 0 :(得分:3)

你在做什么应该工作。我猜你的按钮引用是nil。您可以通过以下行来验证这一点:

NSLog(@"loadImageButton = %@", loadImageButton);
applicationDidFinishLaunching:中的

也许你只是忽略了在Interface Builder中连接它们。

答案 1 :(得分:0)

您的意思是已禁用未选择

如果停用,则在将其设置回setEnabled:YES

之前,您将无法与该按钮互动(即触摸它不会产生任何操作)

如果选中,则表示您的BUTTON将被分配一个选定的控制状态(UIControlStateSelected)。要更改其选定状态,您所要做的就是

[button setSelected:(BOOL)];

如果可以,请将代码粘贴到初始化按钮并设置其属性的位置,以便更容易识别出错误的原因。