我正在创建一个有32个Check Box和NSTextField的应用程序。 如果用户单击NSTextField,则按钮应采用描述此数字的二进制代表的值。 在NSTextField上接收“clicked”动作没问题,但是对于我声明了32个NSButtons数组的按钮:
#import <Foundation/Foundation.h>
@interface Handler : NSObject
{
@private
IBOutlet NSTextField* textField;
IBOutlet NSButton* bits[32]; // here are the buttons
}
- (void)awakeFromNib;
- (void) setTextField : (int) value;
- (int) getTextField;
@end
但是当我尝试将Check Box与IBOutlet“位”链接时,我无法为每个成员执行此操作。 所以我只能将32个指向NSButton的数组组成一个盒子。 我还展示了一张图片:
对我来说这是一个问题,我是否必须手动声明32个不同名称的32个不同的出口?
答案 0 :(得分:3)
您不必使用32个不同的IBOutlet
引用。您可以声明IBOutletCollection
:
@property (retain, nonatomic) IBOutletCollection(NSButton) NSArray *buttons;
使用此链接将它们全部链接起来。请记住,按钮的顺序在运行时是不确定的,这意味着,您无法保证在应用程序运行时按钮将按任何特定顺序排列。
答案 1 :(得分:1)
这可能是使用NSMatrix对象的一个很好的例子。
您可以在界面中添加一个按钮,然后使用在Xcode 4中选择的按钮转到编辑器&gt;嵌入&gt;矩阵。然后,您可以选择拖动按钮的一角,将其展开为矩阵。
NSMatrix允许您通过搜索给定标记或列/行坐标来检索单元格值。
如何: 1)嵌入NSButton对象:
2)选项 - 拖动任何按钮角以展开矩阵:
答案 2 :(得分:0)
我把它扩展成一个矩阵。但是图形上它看起来像一个按钮 这就是我得到的: