所以:我有一个UITableView和另一个viewController。我正在UITableView的.m文件中更新CoreData的一些信息。为了做到这一点,我需要在另一个viewController的文本字段中的文本。
因此缺乏经验,我尝试过:
[entity setName:[NSString stringWithFormat:@"%@", viewController.entityNameInputField.text]];
我更感兴趣的是为什么这种事情不能解决问题的解决方案。为什么我不能以这种方式从文本字段中获取文本?
我想以不同的方式说出一切:
如果我在A类中并且我想要访问类B中的一个NSString的值,为什么我不能只使用ClassA.TheString或[ClassA TheString] ....来自我的设法理解,我发送这些物体的getter方法,我似乎无法理解为什么这不起作用......
任何帮助将不胜感激:)
答案 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]
如果这更适合你。