Cocoa - 从CONTROLLER调用VIEW方法

时间:2010-06-17 20:22:55

标签: cocoa view controller

我之前问过这个问题,但也许我没有正确地问。 我有一个cocoa应用程序,除其他外,必须执行以下任务: - 从磁盘加载一些图像,将它们存储在一个数组中并在自定义视图中显示它们。

在Interface Builder中,我有一个CustomView和一个指向TexturesController.h的OBJECT

自定义视图是一个自定义类TextureBrowser。 下面是控制器和视图的代码:

TexturesController

#import <Cocoa/Cocoa.h>

@class TextureBrowser;

@interface TexturesController : NSObject {  
  IBOutlet NSTextField *logWindow;  
  IBOutlet TextureBrowser *textureView;
  NSMutableArray *textureList; 
} 
@property textureView;
-(IBAction)loadTextures:(id)sender;
-(IBAction)showTexturesInfo:(id)sender;
@end

TextureBrowser

@interface TextureBrowser : NSView {
  NSMutableArray *textures;
}
@property NSMutableArray *textures;
-(void)loadTextureList:(NSMutableArray *)source;
@end

这些只是标题。现在,我需要做的是:

  • 当调用来自TexturesController的loadTextures时,在我加载想要将此数据发送到视图(TextureBrowser)的图像后,例如,将其存储在NSMutableArray *纹理中。

我尝试从视图中使用 - (void)loadTextureList:(NSMutableArray *)源方法,但是在TextureController.m中我得到一个警告:找不到-loadTextureList方法

这就是我称之为方法的方法:

[textureView loadTextureList: textureList];

即使我在那里发出警告并运行它,视图类中的数组也不会被初始化。

也许我错过了一些东西......也许有人可以给出一个简单的例子,说明我需要做什么以及如何做(代码)。

提前致谢。

2 个答案:

答案 0 :(得分:1)

TexturesController.m中,您必须导入TextureBrowser.h,以便控制器知道属性textureView具有哪些方法。现在,您只有一个空白的占位符符号而不是实际的类。

由于textureView是由插座定义的,因此您需要确保在Interface Builder中正确设置了其类。如果您提供通用NSView,它将不具有loadTextureList:方法。

答案 1 :(得分:0)

如果你在TexturesController.m中导入了TextureBrowser.h,我不明白为什么它找不到你的方法。

但为什么不简单地从TexturesController调用self.textureView.textures = textureList;