2011-07-29 33 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