Objective-C(iOS)从另一个类访问UITextField的文本

时间:2011-01-26 06:41:15

标签: iphone objective-c ios4

这个问题是非常基本的,如果答案应该盯着我,我会道歉。

所以:我有一个UITableView和另一个viewController。我正在UITableView的.m文件中更新CoreData的一些信息。为了做到这一点,我需要在另一个viewController的文本字段中的文本。

因此缺乏经验,我尝试过:

[entity setName:[NSString stringWithFormat:@"%@", viewController.entityNameInputField.text]];

为了清楚起见,我重新命名了一些东西。实体是我的实体(没有开玩笑),我设置的属性叫做Name,viewController是textField的地方,文本字段叫做entityNameInputField。

我更感兴趣的是为什么这种事情不能解决问题的解决方案。为什么我不能以这种方式从文本字段中获取文本?

我想以不同的方式说出一切:

如果我在A类中并且我想要访问类B中的一个NSString的值,为什么我不能只使用ClassA.TheString或[ClassA TheString] ....来自我的设法理解,我发送这些物体的getter方法,我似乎无法理解为什么这不起作用......

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

更多代码对于查看可能导致混淆的内容非常有用,但如果您在类中声明了相关实例变量(或手动声明的访问器)的属性,那么您将能够访问相关的ivars。 / p>

所以,这样的事情(如下)将正常工作。

MyClassA * instanceOfA = [[myClassA alloc] init];
MyClassB * instanceOfB = [[myClassB alloc] init];

instanceOfA.myProperty = instanceOfB.myProperty;

答案 1 :(得分:0)

据我了解,这不是从另一个类访问值的问题。假设两个视图控制器都保留在内存中,您可以随时调用彼此的getter / setter。

我假设您有一个名为 A UITableViewController ,然后您将呈现名为 B <的 UIViewController / strong>带有文本字段。用户点击文本字段中的某些内容,您希望此文本返回到表视图控制器。如果在B中你有一个对A的有效引用,你可以调用它的适当变量的setter,然后关闭自定义控制器。

例如,在B的标题中你可以:

@interface MyViewController : UIViewController {
     id tableViewController;
}
@property (nonatomic, retain) id tableViewController;

然后在A中,当你创建B时:

MyViewController *B = [[MyViewController alloc] init];
B.tableViewController = self; // this passes a reference to A

所以当你在B中并且用户在文本字段中输入了输入时,你可以做类似的事情

[self.tableViewController setVarname:textField.text];

假设A中有一个varname变量,B中有一个textField。

您还可以通过调用

获得对A的访问权限,而无需创建单独的变量
[self parentViewController]

如果这更适合你。