2011-07-29 34 views
0

所以我有一个使用控制器类的objective-c项目。这通过IBOutlets与接口生成器连接。访问可可接口生成器控制器方法

我的理解是控制器通过加载用户界面(因为它被添加到界面生成器中作为对象)来初始化。然后,我想使用控制器的getter方法返回IBOutlet字段中的值。

因此,为了澄清我的意思是有一些代码,这是我的控制器接口/实现:

@interface controller : NSObject { 
@private 
IBOutlet NSTextField *name; 
} 
-(NSString*) name; 
@end 

然后,在我的实现,我有:

-(NSString*) name 
{ 
    return [name stringValue]; 
} 
在第三类

,我希望能够写出:

NSString blahblah = [controller name] and have the value of blahblah assume the value of whatever is in the controller's IBOutlet "name" field. 

希望这是有道理的。当我尝试这样做时,我得到“语义问题:方法'+名称'未找到(返回类型默认为'id')”

为什么?控制器对象在哪里实际证实,在哪里以及如何访问它的字段?

+0

这里有更多的错误比行代码 - 模糊伊娃名字的控制器直接从NSObject的,不正确的使用指针的继承,访问名,不正确的MVC等。最好备份并阅读Apple的“Objective-C编程语言”,然后继续阅读关于Cocoa应用程序开发的书籍/教程。 – alexantd

回答

2

您必须通过使用[[controller alloc] initWithNibName:nibName bundle:nil]来实例化控制器;

通过使用[控制器名称]您正在调用一个类的方法。还应该的NSString * blahblah

你应该阅读本文件: http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html#//apple_ref/doc/uid/TP40007594

+0

那么我应该在哪里实例化控制器?在应用程序委托? –

+0

取决于您想要做什么以及您想要将视图控制器添加到层次结构中的位置。我会建议采取alexantd的建议和阅读苹果的文档,然后一个可可教程 – mets19