2009-11-12 36 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