【问题标题】:How can I access a method from another class?如何从另一个类访问方法?
【发布时间】:2009-11-12 15:49:43
【问题描述】:

我知道这个问题已经问了好几次了,但我不明白。

我有 2 个类 classA.h 和 .m 以及 classB.h 和 .m。

在 classA.h 中,我有一个 UITextField *myTextfield。 在 classB 中,我导入 classA 的标题并使用@class classA 定义该类。 我还设置了classA *classa

如果我尝试像这样获取 myTextfield 的值 myString = classA.myTextfield.text; 什么都没发生

有什么建议我在这里做错了吗?

我会非常感谢你的回答,因为如果没有完成,我将无法继续编码 :)

谢谢!

【问题讨论】:

标签: iphone class shared


【解决方案1】:

Objective-C 类的成员始终是私有的。

为了访问另一个类的成员,您需要为这些属性创建访问器方法。最简单的方法是通过属性。

将您的 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 中的某个文本字段。如果这是问题,请参阅示例界面生成器教程。

【讨论】:

  • 感谢您的快速回复!那么,如果我将 UITabeViewController 更改为 SuperClass 或 UIViewController 会怎样?这对类的行为没有任何影响吗?
  • SuperClass 只是您当前超类的占位符。由于它是一个 UITableViewController,我将编辑示例以匹配。
  • 我如何调用方法? [classA addEntryToList];那不调用该方法,但为什么呢?方法如下所示: - (void)addEntryToList;谢谢
  • 在A类中我设置了一个NSString:NSString *myString = @"viewDidLoad";在 classB 中,我尝试使用以下方法获取值: NSString *mystring2 = [classA myString];但这不起作用。没有编译器错误,只有一个警告,因为一个未使用的 var。 :(
猜你喜欢
  • 2017-01-03
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
相关资源
最近更新 更多