Objective c 以编程方式创建NSMatrix,Snow Leopard

Objective c 以编程方式创建NSMatrix,Snow Leopard,objective-c,xcode,osx-snow-leopard,nsmatrix,Objective C,Xcode,Osx Snow Leopard,Nsmatrix,我正在尝试以编程方式创建NSImageCell原型的NSMatrix(如果您可以通过Interface Builder帮助我,请随时回答我的问题) 我创建了一个新的空项目。其中,普通对象(NSObject的子类)具有以下代码(且仅此代码): “视图”是指定为插座的NSView,连接到Interface Builder中窗口的内容视图 矩阵根本不显示。它打印到日志中,显示帧大小为(0,0100),如预期的那样 我做错了什么 正如标题所述,我正在雪豹机器上使用Xcode 3.2.1进行此操作 默认情

我正在尝试以编程方式创建NSImageCell原型的NSMatrix(如果您可以通过Interface Builder帮助我,请随时回答我的问题)

我创建了一个新的空项目。其中,普通对象(NSObject的子类)具有以下代码(且仅此代码):

“视图”是指定为插座的NSView,连接到Interface Builder中窗口的内容视图

矩阵根本不显示。它打印到日志中,显示帧大小为(0,0100),如预期的那样

我做错了什么


正如标题所述,我正在雪豹机器上使用Xcode 3.2.1进行此操作

默认情况下,
NSMatrix
不会绘制任何内容,因为它是其中nscell的容器。通过将NSMatrix设置为绘制背景,可以验证是否已将其正确添加到视图中

[matrix setBackgroundColor:[NSColor blueColor]];
[matrix setDrawsBackground:YES];
由于
NSMatrix
NSCell
的容器,您需要用一些东西填充它们。在您发布的示例中,您可以通过获取与您唯一的行和列对应的单元格并设置图像来实现这一点

NSImageCell *cell = (NSImageCell *)[matrix cellAtRow:0 column:0];
[cell setImage:[NSImage imageNamed:@"image.jpg"]];

另外,请记住,您的矩阵只够显示一个单元格,当您向其中添加列和行时,您需要增加其大小。

IB绝对是处理此类基本情况的更简单方法。我已经回答了你的问题。太好了,我明白了。出于好奇-你能解决这个问题吗?:-)一旦我设置了单元格大小(如我的示例中所示),它不应该至少显示空的NSImageCells吗?NSImageCell也不会绘制任何东西,除非您在其中设置了图像。
NSImageCell *cell = (NSImageCell *)[matrix cellAtRow:0 column:0];
[cell setImage:[NSImage imageNamed:@"image.jpg"]];