如果表视图有0行,如何才能使按钮变为禁用状态?

时间:2013-10-20 15:50:32

标签: objective-c cocoa interface-builder nsbutton

我有两个按钮 - “插入行”和“删除行”,通过界面构建​​器创建。

当我的表中有0行时,我希望“删除行”按钮显示为灰色。

我被告知禁用按钮的方法是 - [button setEnabled:no]或取消选中界面构建器中的'Enabled'框。但是,这些案例中的任何一个都不适合我。

有什么建议吗?

6 个答案:

答案 0 :(得分:1)

在.h文件中为您的按钮创建一个IBOutlet

AppDelegate.h


{
    IBOutlet NSButton* yourButton;
}

然后按住Ctrl键从xib中的按钮拖动到FileOwner / AppDelegate,并将按钮的引用插座连接到AppDelegate类中的yourButton。

现在,如果您使用数据源方法填充表视图,请实现

AppDelegate.m

- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView;
{
    if(![yourArray count])
    {
        [yourButton setEnabled:NO];
    }
    else
    {
        [yourButton setEnabled:YES];
    }
    return [yourArray count];
}

答案 1 :(得分:0)

你确定[button setEnabled:NO]按钮没有禁用按钮吗?您需要为其禁用状态设置不同的视觉样式,以使其看起来已禁用。如果通过点击按钮启用该按钮,请尝试进行测试。

答案 2 :(得分:0)

您应该将UIButtonType和UIButton setTitle设置为默认为灰色。例如,程序应该像

 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 [button setTitle:@"delete row" forState:UIControlStateNormal];
 button.enabled = NO;
 button.frame = CGRectMake(20, 20, 100, 100);

如果为UIButton设置背景图像。您需要设置自定义UIImage以启用和禁用。

[button setBackgroundImage:[UIImage imageNamed:@"enable.png"] 
                  forState:UIControlStateNormal];

[button setBackgroundImage:[UIImage imageNamed:@"disable.png"] 
                  forState:UIControlStateDisabled];

答案 3 :(得分:0)

如果您已完成按钮的绑定,请按照以下绑定进行操作。  为此,您需要将按钮绑定到启用属性 - >阵列控制器 - >选择 - >
       型号Keypath - > “@count”

答案 4 :(得分:0)

您可能已绑定到阵列控制器。然后,您可以将删除按钮的enabled属性绑定到数组控制器的canRemove属性。

答案 5 :(得分:0)

如果您通过绑定填充表格视图,这是您可以尝试的代码段

if(![[arrayController arrangedObjects] count])
        {
            [button setEnabled:YES];
        }
        else
        {
            [button setEnabled:NO];
        }

其中arraycontroller是NSArrayconrtoller的出口,它是XIB中的内容数组。