我有两个按钮 - “插入行”和“删除行”,通过界面构建器创建。
当我的表中有0行时,我希望“删除行”按钮显示为灰色。
我被告知禁用按钮的方法是 - [button setEnabled:no]或取消选中界面构建器中的'Enabled'框。但是,这些案例中的任何一个都不适合我。
有什么建议吗?
答案 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中的内容数组。