我有两个按钮——“插入行”和“删除行”,通过界面生成器创建。
当我的表中有 0 行时,我希望“删除行”按钮变灰。
有人告诉我禁用按钮的方法是 - [button setEnabled:no] 或取消勾选界面生成器中的“启用”框。但是,这两种情况都不适合我。
有什么建议么?
我有两个按钮——“插入行”和“删除行”,通过界面生成器创建。
当我的表中有 0 行时,我希望“删除行”按钮变灰。
有人告诉我禁用按钮的方法是 - [button setEnabled:no] 或取消勾选界面生成器中的“启用”框。但是,这两种情况都不适合我。
有什么建议么?
在 .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];
}
如果您通过绑定填充表视图,这是您可以尝试的片段
if(![[arrayController arrangedObjects] count])
{
[button setEnabled:YES];
}
else
{
[button setEnabled:NO];
}
其中 arraycontroller 是 XIB 中内容数组的 NSArrayconrtoller 的出口。
您应该将 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];
如果您已完成按钮的绑定,请遵循以下绑定。为此,您需要将按钮绑定到 Enable property -> Array Controller -> Selection ->
Model Keypath -> "@count"
可能您绑定到数组控制器。然后可以将删除按钮的 enabled 属性绑定到数组控制器的 canRemove 属性上。
您确定 [button setEnabled:NO] 不会禁用该按钮吗?您需要为其禁用状态设置不同的视觉样式,使其看起来已禁用。尝试通过点击按钮来测试按钮是否已启用。