2009-11-12 37 views
0

我知道這個問題已經問過幾次了,但我不明白。如何從另一個類訪問方法?

我有2個類classA.h & .m和classB.h和.m。

在classA.h中,我有一個UITextField *myTextfield。 在classB中,我導入classA的標題並用@class classA定義類。 我也設置了classA *classa

如果我嘗試獲取像這樣myTextfield的值myString = classA.myTextfield.text; 沒有任何反應

任何建議我在這裏做錯了嗎?

我將是一個答案,從而因爲...不心存感激得到這個做,我不能繼續編碼:)

的感謝!

+0

您的價值沒有得到更新或您的代碼無法編譯? – Vladimir 2009-11-12 15:56:47

+0

它看起來像你試圖訪問類屬性(變量)而不是方法(函數)。網上有很多初學者教程。以下是聲明屬性的Objective-c 2.0指南:http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html#//apple_ref/doc/uid/TP30001163- CH17-SW1 – wkw 2009-11-12 15:57:13

+0

我對值和方法都有問題。我認爲一個解決方案會幫助我解決這兩個問題。我忘了改標題對不起。 – jacky 2009-11-12 16:17:11

回答

1

Objective-C類的成員始終是私有的。

爲了訪問另一個類的成員,您需要爲這些屬性創建訪問器方法。最簡單的方法是通過屬性。

Modifiy您classA.h看起來像這樣

@interface classA : UITableViewController 
{ 
    IBOutlet UITextField *myTextfield; 
    ... 
} 
@property(retain, readonly) UITextField * myTextfield; 
... 
@end 

然後修改classA.m有

@implementation classA 
@synthesize myTextfield; 

然後,當你需要在其他類皆可使用

使用它
classa.myTextfield.text 

或者優選地

[[classa myTextfield] text] 

編輯:

還要確保myTextField將被設置爲某個值,通過掛鉤起來,以在Interface Builder一些文本字段。如果這是問題,請參閱示例Interface Builder教程。

+0

感謝您的快速回復! 那麼,如果我改變爲例如UITabeViewController超級類或UIViewController?這對這些課程的行爲有沒有影響? – jacky 2009-11-12 16:05:55

+0

SuperClass只是您當前超類的佔位符。由於它是一個UITableViewController,我將編輯示例以匹配。 – 2009-11-12 16:15:16

+0

以及我如何調用方法? [classA addEntryToList]; 不調用該方法,但爲什麼?方法如下: - (void)addEntryToList; 謝謝 – jacky 2009-11-12 16:26:55