在Objective-C中从另一个类的一个实例中访问变量
我遇到的问题是我有几个ViewController
s,我想从另一个ViewController
中的一个ViewController
访问变量。这可能可以很简单地解决(但我不明白这一点),但如果我有,例如UITextField
ViewController1
调用myTextField
,我如何从ViewController2
访问myTextField.text
?在Objective-C中从另一个类的一个实例中访问变量
我尝试在我的第二个类中实例化UIViewController
,但那不起作用,因为那只是一个新的实例化类,而不是已经实例化的类,因此所有变量都没有正确的值。
在此先感谢!
访问所有视图控制器中文本字段的简单方法。
- 创建一个新的类(NSObject的子类)
- 使其在 程序的寿命singleton..i.e.only一个实例。
- 将文本存储在单例类中。
- 检索其他视图控制器单身并加载文本..
谷歌单Objective-C中找到更多关于它。
无论你想要做什么几乎肯定是错的。至少,它违背了规则,你应该而不是试图从另一个视图内访问一个视图的视觉效果。
你应该把从你计划分享到你的模型类,不管它可能是UITextField
数据,以及访问这些数据通过模型,而不是试图直接访问UITextField
。
什么是模型课程? – 2012-03-04 16:57:46
@ user1226490这是您用来保持独立于视图的数据的对象。阅读[本MVC](https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html#//apple_ref/doc/uid/TP40008195-CH32)指南了解更多关于模型 - 视图 - 控制器模式的信息。 – dasblinkenlight 2012-03-04 17:04:29
我发现,最简单的方法是创建一个静态方法,该方法返回您尝试访问的变量,无论是在类中还是仅在第一个视图控制器中作为实例变量。
第一个视图控制器
+ (NSString*) returnSomestring{
return myVariable;
//myVariable can be replaced with textView.text or whatever you need it to be.
}
第二个视图控制器
#import "FirstViewController.h"
- (void) doSomething{
NSString* var = [FirstViewController returnSomestring];
//Code
}
问题解决了!
但是我的这个想法的问题是,每个实例不会'myVariable'不相同,因此类本身不知道要返回哪个实例(即使只有一个分配的实例),导致发生错误? – 2012-03-04 16:59:24
你想通过访问其他人来完成什么?可能有更好的方法,比如通知,委托等。如果你描述你想要完成的事情,我们可以给你一个更好的答案。 – user1118321 2012-03-04 05:49:12